我想将下面的声明放在shell脚本中:proxy_set
declare -x https_proxy="https://192.168.220.4:8080/"
然后我就像下面那样执行它。
$ ./proxy_set
但“出口”表明没有发生任何事情。
另一方面,如果我这样执行它:
$ source proxy_set
然后“导出”显示它有效!
我的问题是如何在没有额外“源”cmd的情况下使其工作? 谢谢!
答案 0 :(得分:3)
你做不到。在环境中设置变量只会影响该shell的环境以及它产生的任何未来子代;没有办法影响父shell。当你在没有source
(或.
)的情况下运行它时,会启动一个全新的shell,然后在该shell的环境中设置该变量,然后退出该shell,并使用它的环境。
source
读取命令并在当前shell中执行它们,就像您键入它们一样。
因此,如果要在脚本中设置环境变量,则必须source
。或者,您可以使用命令生成shell命令作为输出而不是运行它们,然后父级可以评估命令的输出。 ssh-agent
之类的东西使用这种方法。
答案 1 :(得分:0)
尝试添加:
export https_proxy="https://192.168.220.4:8080/"
然后正常执行你的脚本。