我想在 shell 脚本中声明如下:proxy_set
declare -x https_proxy="https://192.168.220.4:8080/"
然后我像下面这样执行它。
$ ./proxy_set
但是“export”显示什么都没发生。
换一种方式,如果我这样执行:
$ source proxy_set
然后“导出”显示它有效!
我的问题是,如果没有额外的“source”cmd,我怎样才能让它工作? 谢谢!
最佳答案
你不能。在环境中设置变量只会影响该 shell 的环境以及它产生的任何 future child ;没有办法影响父 shell。当你在没有 source
(或 .
)的情况下运行它时,一个全新的 shell 会启动,然后在那个 shell 的环境中设置变量,然后那个 shell 退出,带着它的环境。
source
读取命令并在当前 shell 中执行它们,就好像您已键入它们一样。
所以如果你想在脚本中设置环境变量,你必须source
它。或者,您可以让命令生成 shell 命令作为输出而不是运行它们,然后父级可以评估命令的输出。 ssh-agent
之类的东西使用这种方法。
关于linux - 如何在 Linux shell 脚本中声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11376338/