源/别名在Mac .bashrc中不是永久的

时间:2018-11-09 16:34:22

标签: bash macos symlink

我有一个.sources符号链接,该链接指向一个目录,其中包含在打开终端时希望提供的文件。

在我的.bashrc文件~/.bash_profile中,我有以下代码

sourcesDir=$HOME/.sources
ls -B $sourcesDir | while read filename; do
  echo "source $sourcesDir/$filename"
  source $sourcesDir/$filename
done

启动Terminal时,得到以下输出

source /Users/merlinpatterson/.sources/bash_aliases
source /Users/merlinpatterson/.sources/git_completion.bash
source /Users/merlinpatterson/.sources/git_prompt.sh
source /Users/merlinpatterson/.sources/meteor.sh

但是,当我运行alias时,没有任何别名出现。导出的所有变量均为空白。并且找不到__git_ps1

如果我在启动Terminal之后运行上述命令,那么一切都会正常,因此文件本身就很好。

为什么source的结果不停留在终端机中?

1 个答案:

答案 0 :(得分:2)

while循环在子shell中运行,而不是当前的shell。改用

for filename in "$sourcesDir"/*; do
    source "$filename"
done