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