有人可以告诉我在鱼壳中设置一堆环境变量的正确方法是什么?
在我的.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
时,我看不到这些信息。
答案 0 :(得分:94)
如果必须在当前计算机上的所有当前用户fish实例之间共享变量,并且必须在shell中保留重启,则必须使用-U
或--universal
:
set -Ux FOO bar
将set
与-g
或--global
一起使用不会在shell实例之间持久设置变量
答案 1 :(得分:53)
您声明的变量将保留在函数内的本地范围内。
使用:
set -g -x
此处" g
"是为了全球化。
答案 2 :(得分:9)
我想补充一点,虽然@ JosEduSol的答案不正确并且确实有助于解决OP问题,-g
只是将范围设置为全局,而-x
导致指定的环境要导出到子进程的变量。
上述失败的原因是因为@cfpete正在函数内设置env变量,而默认范围将是该函数的本地变量。
答案 3 :(得分:5)
另一种选择是运行:
export (cat env_file.txt |xargs -L 1)
其中env_file.txt包含格式VAR=VALUE
这有利于将变量保持为其他shell和工具支持的格式