wie man Umgebungsvariablen in Fischschalen setzt


87

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

In meiner Datei .config / fish / config.fish habe ich eine Funktion, um meine Umgebungsvariablen so einzurichten

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

Wenn ich an der Eingabeaufforderung tippe setTESTENVund envin der Befehlszeile ein tippe, werden diese Informationen nicht angezeigt .

Antworten:


66

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

Verwenden:

set -g -x

Hier ist " g" für global.


145

Verwenden Sie universelle Variablen

Wenn die Variable zwischen allen den aktuellen Benutzer Fisch - Instanzen auf dem aktuellen Computer werden muss geteilt und Neustarts erhalten von der Shell Sie verwenden -Uoder --universal:

set -Ux FOO bar

Wenn Sie die Variable setmit -goder --globalnicht dauerhaft zwischen Shell-Instanzen festlegen


Hinweis :

Nicht an universelle Variablen in der config.fishDatei anhängen , da diese Variablen dann mit jeder neuen Shell-Instanz länger werden. Führen Sie set einfach -Uxeinmal in der Befehlszeile aus. Und es wird in der Datei gespeichert werden .config/fish/fishd.MACHINE_ID, wo MACHINE_IDnormalerweise Adresse MAC ist.


Meine Variablen wurden nicht in gespeichert fishd.MACHINE_ID, sondern in~/.config/fish/fish_variables
Seanny123

Meine Variable wurde ~/.config/fish/fish_variablesam Ubuntu 20.04
Igor Markelov

11

Eine andere Option ist das Ausführen von:

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

Dabei enthält env_file.txt Zeilen des Formats VAR=VALUE

Dies hat den Vorteil, dass die Variablen in einem Format gehalten werden, das von anderen Shells und Tools unterstützt wird


9

Umgebungsvariablen in Fischen

Ich möchte hinzufügen, dass die Antwort von @ JosEduSol zwar nicht falsch ist und zur Lösung des OP-Problems beiträgt -g, der Bereich jedoch nur auf global festgelegt wird-x die angegebene Umgebungsvariable in untergeordnete Prozesse exportiert wird.

Der Grund, warum dies fehlschlägt, liegt darin, dass @cfpete die env-Variablen innerhalb einer Funktion festlegt und der Standardbereich für diese Funktion lokal ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.