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

时间:2014-09-02 21:39:56

标签: shell fish

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

在我的.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时,我看不到这些信息。

4 个答案:

答案 0 :(得分:94)

使用Universal Variables

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

set -Ux FOO bar

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

答案 1 :(得分:53)

您声明的变量将保留在函数内的本地范围内。

使用:

set -g -x

此处" g"是为了全球化。

答案 2 :(得分:9)

Environment Variables in Fish

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

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

答案 3 :(得分:5)

另一种选择是运行:

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

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

的行

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