我有一个.sources
符号链接,指向一个目录,其中包含我希望在打开终端时获取的文件。
在来自~/.bash_profile
的.bashrc
文件中,我有以下代码
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
时,没有显示任何别名。导出的任何变量都为空。未找到CCD_ 5。
如果我在启动终端后运行上述命令,一切都正常,所以文件本身也很好。
为什么source
的结果没有留在航站楼?
while
循环在子shell中运行,而不是在当前shell中运行。改为使用
for filename in "$sourcesDir"/*; do
source "$filename"
done