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