如何在fish shell Universal Variables中设置环境变量

问题描述 投票:65回答:4

有人可以告诉我在fish shell中设置一堆环境变量的正确方法是什么?

在我的.config / fish / config.fish文件中,我有一个设置我的环境变量的函数

function setTESTENV
      set -x BROKER_IP '10.14.16.216'
      set -x USERNAME 'foo'
      set -x USERPASS 'bar'
end 

当我从命令提示符setTESTENV键入并在命令行中执行env时,我看不到这些信息。

shell fish
4个回答
52
投票

您声明的变量保留在函数内的局部范围内。

使用:

set -g -x

这里“g”是全球性的。


92
投票

Use Universal Variables

如果变量必须在当前计算机上的所有当前用户fish实例之间共享,并在shell重新启动时保留,则必须使用-U--universal

set -Ux FOO bar

set-g--global一起使用不会在shell实例之间持久设置变量


9
投票

Environment Variables in Fish

我想补充一点,虽然@ JosEduSol的答案不正确并且确实有助于解决OP问题,但-g仅将范围设置为全局,而-x导致将指定的环境变量导出到子进程。

上述失败的原因是因为@cfpete在函数内设置env变量,默认范围将是该函数的本地范围。


4
投票

另一种选择是运行:

export (cat env_file.txt |xargs -L 1)

其中env_file.txt包含格式为VAR=VALUE的行

这有利于将变量保持为其他shell和工具支持的格式

© www.soinside.com 2019 - 2024. All rights reserved.