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

Source / Alias not Permanent in Mac .bashrc

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

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

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

当我启动终端时,我得到以下输出

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时,none的别名出现了。导出的任何变量都是空白的。并且 __git_ps1 未找到。

如果我 运行 在启动终端后执行上述命令,一切正常,所以文件本身没问题。

为什么 source 的结果没有留在终端中?

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

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