0

我想在 shell 脚本中声明:proxy_set

declare -x https_proxy="https://192.168.220.4:8080/"

然后我像下面一样执行它。

$ ./proxy_set

但“出口”表明什么也没发生。

以另一种方式,如果我这样执行它:

$ source proxy_set

然后“导出”显示它有效!

我的问题是如何在没有额外的“源”cmd 的情况下使其工作?谢谢!

4

2 回答 2

3

你不能。在环境中设置变量只会影响该外壳的环境以及它产生的任何未来的孩子;没有办法影响父外壳。当您在没有source(or .) 的情况下运行它时,会启动一个全新的 shell,然后在该 shell 的环境中设置变量,然后该 shell 退出,并带上它的环境。

读取命令并在当前 shell 中执行它们,source就像您键入它们一样。

所以如果你想在脚本中设置环境变量,你必须这样source做。或者,您可以让命令生成 shell 命令作为输出而不是运行它们,然后父级可以评估命令的输出。像ssh-agent使用这种方法的东西。

于 2012-07-07T15:45:49.143 回答
0

尝试添加:

export https_proxy="https://192.168.220.4:8080/"

然后正常执行你的脚本。

于 2012-07-07T15:48:17.743 回答