运行影响父shell

时间:2017-03-07 10:33:27

标签: linux bash shell

我有这个bash脚本,假设将当前目录中的virtualenv cd激活到另一个文件夹并执行命令,即导出pythonpath并打印pythonpath变量。这是脚本:

#!/bin/bash

source venv/bin/activate
(cd cool/subcool && export PYTHONPATH=`pwd`:$PYTHONPATH)
echo $PYTHONPATH

当我执行它时,我只得到一个空白行,即$PYTHONPATH为空并且没有激活virtualenv。我是bash脚本的新手。什么方法可以使这项工作?感谢

2 个答案:

答案 0 :(得分:1)

这个怎么样:

foo.rc

但是您应该将此文件命名为source或类似文件,然后source,而不是将其命名(使用.source foo.rc ,这是相同的):

{{1}}

否则它不会影响你的调用shell。

答案 1 :(得分:1)

cd对于添加变量路径似乎有些过分。为什么不使用readlink -f

source venv/bin/activate
export PYTHONPATH="$(readlink -f cool/subcool):$PYTHONPATH"
echo "$PYTHONPATH"