【发布时间】:2010-11-28 05:51:43
【问题描述】:
我需要允许多个应用程序附加到系统变量(在本例中为 $PYTHONPATH)。我正在考虑指定一个目录,每个应用程序都可以在其中添加一个模块(例如 .bash_profile_modulename)。在 ~/.bash_profile 中尝试过这样的事情:
find /home/mike/ -name ".bash_profile_*" | while read FILE; do
source "$FILE"
done;
但它似乎不起作用。
【问题讨论】:
-
一个快速测试脚本适合我。您能否更具体地说明您的文件包含什么以及“似乎不起作用”是什么意思?
-
文件看起来像: export PYTHONPATH=/testpath/:$PYTHONPATH 问题是它没有将 /testpath/ 添加到 PYTHONPATH。
-
只是为了解释为什么原始脚本不起作用:文件来源于管道中的while循环;管道中使用的 bash 内置函数在子 shell 中执行,因此当子 shell 退出时,源文件定义的任何内容都会消失。解决方案(如下面的答案)是消除管道。
-
非常类似于这个问题:stackoverflow.com/q/20796200/1695680
-
这对我来说“似乎不起作用”,但它起作用了。我的一个完成脚本被破坏并且正在撤消早期的工作。所以这是要检查的东西。具体来说,集线器命令的 bash 完成覆盖了 git,并且不适用于最新的 git 版本。