2012-07-07 117 views
0

我想提出以下声明在shell脚本:proxy_set如何在Linux shell脚本中声明?

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

然后我执行它象下面。

$ ./proxy_set 

但“出口”显示什么都没有发生。

而在另一种方式,如果我执行这样的:

$ source proxy_set 

然后“出口”显示它的作品!

我的问题是如何让它工作,无需额外的“源”cmd? 谢谢!

回答

3

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

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

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

+0

谢谢您的详细解释!这非常有用。 – 2012-07-07 15:54:52

0

尽量只加:

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

然后正常执行脚本。

+0

似乎它仍然无法正常工作。 – 2012-07-07 15:53:24