2014-09-02 47 views
43

有人能告訴我什麼是在魚殼中設置一堆環境變量的正確方法嗎?如何在魚殼中設置環境變量

在我的.config /魚/ config.fish文件,我必須設置一個功能我的環境變量,像這樣

function setTESTENV 
     set -x BROKER_IP '10.14.16.216' 
     set -x USERNAME 'foo' 
     set -x USERPASS 'bar' 
end 

,當我從命令提示符下鍵入setTESTENV,並在命令行做env ,我沒有看到這些信息。

回答

38

您聲明的變量保留在函數內的本地範圍內。

用途:

set -g -x 

這裏的 「g」 是全球性的。

8

Environment Variables in Fish

我想補充的是,雖然@ JosEduSol的回答是不是不正確的,確實有助於解決OP問題,-g只設置範圍是全球性的,而-x導致指定的環境變量被導出到子進程。

上述失敗的原因是因爲@cfpete在一個函數中設置了env變量,並且默認作用域將在該函數中是局部的。

57

使用Universal Variables

如果變量必須被所有當前用戶魚在當前計算機上和跨重新啓動,你必須使用shell的保存實例之間共享-U--universal

set -Ux FOO bar 

使用set-g--global不會在外殼實例之間持久地設置變量

+9

注支持受益的行,不要在'config.fish'文件中追加通用變量,因爲這些變量隨後會在每個新的shell實例中變得更長。相反,只需在命令行運行'set -Ux' ** once **。它將存儲在'.config/fish/fishd.MACHINE_ID'文件中,其中MACHINE_ID通常是您的MAC地址。 – 2017-05-15 17:51:33

1

另一種選擇是運行:

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

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

這有保持變量的格式由其他炮彈和工具