2014-09-02 25 views
43

Kann mir bitte jemand sagen, wie man eine Reihe von Umgebungsvariablen in der Fischschale richtig einstellt?wie man Umgebungsvariablen in der Fischschale einstellt

In meiner .config/Fisch/config.fish Datei, habe ich eine Funktion zum Einrichten meiner Umgebungsvariablen wie so

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

, wenn ich von der Eingabeaufforderung setTESTENV und ein env in der Befehlszeile tun Ich sehe diese Informationen nicht.

Antwort

38

Die Variablen, die Sie deklarieren, werden in einem lokalen Bereich innerhalb Ihrer Funktion gespeichert.

Verwendung:

set -g -x 

Here "g" ist für global.

8

Environment Variables in Fish

würde ich hinzufügen, während @ JosEduSol Antwort nicht falsch ist und das OP-Problem zu lösen hilft, -g nur den Umfang setzen weltweit zu sein, während -x die angegebene Umgebungsvariable verursacht zu in untergeordnete Prozesse exportiert werden.

Der Grund für den obigen Fehler liegt darin, dass @cfpete die env-Variablen in einer Funktion festlegt und der Standardbereich für diese Funktion lokal ist.

57

Verwenden Universal Variables

Wenn die Variable zwischen allen aktuellen Benutzer Fisch-Instanzen auf dem aktuellen Computer werden muss geteilt und Neustarts erhalten der Schale Sie verwenden müssen -U oder --universal:

set -Ux FOO bar 

set mit -g oder --global setzt die Variable nicht persistent zwischen Shell-Instanzen

+9

Hinweis VAR=VALUE

hat dies den Vorteil zu halten, die Variablen in einem Format unterstützt enthält , Hängen Sie keine universellen Variablen in der 'config.fish'-Datei an, da diese Variablen dann mit jeder neuen Shell-Instanz länger werden. Stattdessen führe einfach 'set -Ux' ** einmal ** in der Befehlszeile aus. Und es wird in der Datei '.config/fish/fishd.MACHINE_ID' gespeichert, wobei MACHINE_ID normalerweise Ihre MAC-Adresse ist. –

1

eine weitere Option auszuführen:

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

wo env_file.txt Reihen des Formats von anderen Shells und Tools

Verwandte Themen