【发布时间】:2016-04-04 17:20:24
【问题描述】:
我正在尝试通过 bash 脚本激活我的 conda env。即使脚本运行良好并且我的 PATH 似乎在脚本中发生了更改,但在脚本终止后它会以某种方式重置。我可以从 cmd 行调用source activate test,它工作正常。一个示例以及下面的输出。
脚本:
PycharmProjects/test » cat ./example.sh
echo "before calling source: $PATH"
source activate test
echo "after calling source: $PATH"
输出:
./example.sh
before calling source: /Use rs/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin
discarding /Users/me/miniconda3/bin from PATH
prepending /Users/me/miniconda3/envs/test/bin to PATH
after calling source: /Users/me/miniconda3/envs/test/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin`
但是如果我在脚本完成后echo $PATH,你可以看到$PATH没有改变(即没有/Users/me/miniconda3/envs/test/bin):
PycharmProjects/test » echo $PATH /Users/me/miniconda3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin
【问题讨论】:
-
echo $PATH在哪里这么说的?您是否将example.sh作为脚本本身运行(即./example.sh)?而不是sourceing 它(即source example.sh)? -
以脚本 (./example.sh) 运行
example.sh。我在脚本运行完成后调用了echo $PATH,只是为了显示 $PATH 实际上并没有改变。 -
将其作为脚本运行,更改会随着 shell 运行脚本而停止。这就是为什么您首先需要
source激活脚本以使其适用于正在运行的脚本/shell。 -
感谢脚本修复它。
标签: macos shell virtualenv conda