如何在鱼壳中设置环境变量

谁能告诉我在鱼壳中设置一系列环境变量的正确方法是什么?

~/.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操作时,我没有看到这些信息。

95410 次浏览

声明的变量保存在函数内的局部作用域中。

用途:

set -g -x

这里的“ g”是全球的。

鱼类的环境变量

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

上述操作失败的原因是,@cfpete 正在函数内部设置 env vars,默认作用域将是该函数的本地作用域。

使用 通用变量

如果变量必须在当前计算机上的所有当前用户 Fish 实例和 shell 的 在重启期间保存下来之间共享,那么可以使用 -U--universal设置它们。例如:

set -Ux FOO bar

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


注意 :

不要在 config.fish文件中追加通用变量,因为这些变量会随着每个新的 shell 实例而变长。相反,只需在命令行中运行 set -Ux一次。

从 Fish 3.0开始,通用变量将存储在文件 ~/.config/fish/fish_variables中。在以前的版本中,它是 ~/.config/fish/fishd.MACHINE_ID,其中 MACHINE _ ID 通常是 MAC 地址。

另一种选择是:

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

其中 env _ file.txt 包含格式为 VAR=VALUE的行

这样做的好处是可以将变量保持在其他 shell 和工具支持的格式中