如何在Linux shell脚本中声明?

时间:2012-07-07 15:40:00

标签: linux shell

我想将下面的声明放在shell脚本中:proxy_set

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

然后我就像下面那样执行它。

$ ./proxy_set

但“出口”表明没有发生任何事情。

另一方面,如果我这样执行它:

$ source proxy_set

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

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

2 个答案:

答案 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/"

然后正常执行你的脚本。