Lösung 1:
Der beste Weg
export VAR=value
Der Unterschied
Mache
VAR=value
setzt die Variable nur für die Dauer des Skripts (.bashrc
in diesem Fall). Untergeordnete Prozesse (falls vorhanden) des Skripts haben keine VAR-Definition, und sobald das Skript beendet wird VAR
ist weg.
export VAR=value
fügt ausdrücklich VAR
hinzu in die Liste der Variablen, die an untergeordnete Prozesse übergeben werden. Willst du es versuchen? Öffnen Sie eine Shell, machen Sie
PS1="foo > "
bash --norc
Die neue Shell erhält die Standard-Eingabeaufforderung. Wenn Sie stattdessen so etwas tun wie
export PS1="foo > "
bash --norc
die neue Shell erhält die Eingabeaufforderung, die Sie gerade festgelegt haben.
Aktualisierung: wie Ian Kelling unten in .bashrc
festgelegte Variablen anmerkt bleiben in der Shell bestehen, die .bashrc
bezogen hat . Allgemeiner ausgedrückt, immer wenn die Shell ein Skript ausgibt (unter Verwendung des source scriptname
Befehl) im Skript festgelegte Variablen bleiben für die Lebensdauer der Shell bestehen.
Lösung 2:
Beide scheinen gut zu funktionieren, aber die Verwendung von export stellt sicher, dass die Variable für Subshells und andere Programme verfügbar ist. Probieren Sie dies aus, um dies zu testen.
Fügen Sie diese beiden Zeilen zu Ihrer .bashrc-Datei hinzu
TESTVAR="no export"
export MYTESTVAR="with export"
Öffnen Sie dann eine neue Shell.
Ausführen von echo $TESTVAR
und echo $MYTESTVAR
zeigt den Inhalt jeder Variablen an. Entfernen Sie nun in derselben Shell diese beiden Zeilen aus Ihrer .bashrc-Datei und führen Sie bash
aus um eine Subshell zu starten.
Ausführen von echo $TESTVAR
wird eine leere Ausgabe haben, aber echo $MYTESTVAR
ausführen wird "mit Export" angezeigt