linux - 如何在 Linux shell 脚本中声明?

标签 linux shell

我想在 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/

相关文章:

linux - 需要有关定义列宽度的建议

linux - bash:意外标记附近的语法错误 `|'

c# - 尝试从 Chrome 实现拖放 Gmail 附件

shell - 重命名 UNIX 目录中的文件 - shell 脚本

读取时的linux FIFO block

linux - Linux 上的最大打开文件限制是多少?

linux - 使用 Qt Creator 和 Linux boost

c - shell和C程序的关系

linux - 如何使用模式匹配对多个文件进行压缩并删除正在压缩的相同文件?

linux - 使用 awk 显示磁盘使用率超过 10% 的设备,并打印列标题