在shell脚本中更改父shell的path变量

时间:2010-11-04 12:07:46

标签: shell

我想在shell脚本中更改路径环境变量。 执行shell脚本后,应修改path变量。

2 个答案:

答案 0 :(得分:8)

我知道有两种方法可以做到这一点。第一种是使用以下任一项在当前shell的上下文中运行脚本:

. myscript.sh
source myscript.sh

但是存在以各种各样的东西污染当前shell的风险。

我更喜欢一种信息泄漏量最小的解决方案。这意味着仍然将其作为子shell运行,但在statndard输出上输出新路径:

PATH=$(myscript.sh)

这个方法要好得多,因为路径是可以受子shell影响的唯一事物,但你必须小心那些子shell输出。

答案 1 :(得分:1)

您需要获取脚本而不是执行它。

. script.sh

source script.sh

在脚本内部,只需输出od即可设置变量。

执行脚本时,它在一个单独的shell进程中运行,并且不能轻易更改父shell的变量。

更多相关信息:Can a shell script set environment variables of the calling shell?