Shell 如何在鱼壳中设置环境变量
谁能告诉我在鱼壳中设置一组环境变量的正确方法是什么 在我的.config/fish/config.fish文件中,我有一个设置环境变量的函数,如下所示Shell 如何在鱼壳中设置环境变量,shell,fish,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时,我看不到这些信息 您声明的变量保存在函数
function setTESTENV
set -x BROKER_IP '10.14.16.216'
set -x USERNAME 'foo'
set -x USERPASS 'bar'
end
当我在命令提示符下键入
setTESTENV
并在命令行中执行env
时,我看不到这些信息 您声明的变量保存在函数的局部范围内
使用:
这里的“g
”代表全球。
我想补充一点,虽然@JosEduSol的答案并不错误,并且确实有助于解决OP问题,-g
只是将作用域设置为全局,而-x
导致指定的环境变量导出到子进程
上述操作失败的原因是@cfpete正在函数内设置env vars,默认范围将是该函数的本地范围。Use
如果必须在当前计算机上的所有当前用户fish实例之间共享变量,并且在shell的重新启动过程中保存变量,则必须使用-U
或-universal
:
set -Ux FOO bar
将set
与-g
或--global
一起使用不会在shell实例之间持久地设置变量
注意:
不要附加到
config.fish
文件中的通用变量,因为这些变量会随着每个新的shell实例而变长。相反,只需在命令行中运行set-Ux
。它将存储在文件.config/fish/fishd.MACHINE\u ID
中,其中MACHINE\u ID
通常是您的MAC地址。另一个选项是运行:
export (cat env_file.txt |xargs -L 1)
其中env_file.txt包含格式为VAR=VALUE
这样做的好处是将变量保存为其他shell和工具支持的格式我的变量未保存在
fishd.MACHINE\u ID
中,但是我的变量被保存在ubuntu 20.04上的~/.config/fish/fish_变量中,如果你想避免注释,你可以:导出(grep“^[^#]”.env| xargs-L 1)
export (cat env_file.txt |xargs -L 1)