我想提出以下声明在shell脚本:proxy_set如何在Linux shell脚本中声明?
declare -x https_proxy="https://192.168.220.4:8080/"
然后我执行它象下面。
$ ./proxy_set
但“出口”显示什么都没有发生。
而在另一种方式,如果我执行这样的:
$ source proxy_set
然后“出口”显示它的作品!
我的问题是如何让它工作,无需额外的“源”cmd? 谢谢!
我想提出以下声明在shell脚本:proxy_set如何在Linux shell脚本中声明?
declare -x https_proxy="https://192.168.220.4:8080/"
然后我执行它象下面。
$ ./proxy_set
但“出口”显示什么都没有发生。
而在另一种方式,如果我执行这样的:
$ source proxy_set
然后“出口”显示它的作品!
我的问题是如何让它工作,无需额外的“源”cmd? 谢谢!
你不能。在环境中设置变量只会影响该shell以及它所产生的未来任何孩子的环境;没有办法影响父shell。当您在没有source
(或.
)的情况下运行它时,会启动一个全新的外壳,然后在该外壳的环境中设置该变量,然后该外壳将退出并在其环境中运行。
source
读取命令并在当前shell中执行它们,就像您键入它们一样。
所以如果你想在脚本中设置环境变量,你必须要source
吧。或者,您可以使用生成shell命令的命令作为输出,而不是运行它们,然后父级可以评估命令的输出。像ssh-agent
这样的东西使用这种方法。
尽量只加:
export https_proxy="https://192.168.220.4:8080/"
然后正常执行脚本。
似乎它仍然无法正常工作。 – 2012-07-07 15:53:24
谢谢您的详细解释!这非常有用。 – 2012-07-07 15:54:52