Soll .bashrc
ich diese beim Einrichten einer Variablen in verwenden?
export VAR=value
Oder wäre das genug?
VAR=value
Was genau ist der Unterschied (falls es einen gibt)?
Soll .bashrc
ich diese beim Einrichten einer Variablen in verwenden?
export VAR=value
Oder wäre das genug?
VAR=value
Was genau ist der Unterschied (falls es einen gibt)?
Antworten:
export VAR=value
Tun
VAR=value
Legt die Variable nur für die Dauer des Skripts fest ( .bashrc
in diesem Fall). Untergeordnete Prozesse (falls vorhanden) des Skripts haben keine VAR definiert, und sobald das Skript beendet VAR
wird, ist es nicht mehr vorhanden.
export VAR=value
Fügt explizit VAR
zur Liste der Variablen hinzu, die an untergeordnete Prozesse übergeben werden. Willst du es versuchen? Öffnen Sie eine Shell
PS1="foo > "
bash --norc
Die neue Shell erhält die Standardaufforderung. Wenn du stattdessen so etwas machst
export PS1="foo > "
bash --norc
Die neue Shell erhält die Eingabeaufforderung, die Sie gerade festgelegt haben.
Update: Wie Ian Kelling unten feststellt, .bashrc
bleiben die in gesetzten Variablen in der Shell erhalten, aus der sie stammen .bashrc
. Allgemeiner gesagt, wenn die Shell ein Skript (unter Verwendung des source scriptname
Befehls) verwendet, bleiben die im Skript festgelegten Variablen für die Lebensdauer der Shell bestehen.
PS1
ist ein schlechtes Beispiel für eine Variable, die als Umgebungsvariable exportiert werden soll. Es ist nur für untergeordnete Prozesse von Bedeutung, die Shells sind, und wird von verschiedenen Shells (z. B. Bash und Dash) unterschiedlich interpretiert. Es wird empfohlen, es einfach als reguläre Shell-Variable in der zu setzen .bashrc
. Bessere Beispiele für Umgebungsvariablen umfassen HOME
, PATH
, EDITOR
etc.
Beide scheinen gut zu funktionieren, aber durch die Verwendung des Exports wird sichergestellt, dass die Variable für Subshells und andere Programme verfügbar ist. Um dies zu testen, versuchen Sie dies.
Fügen Sie diese beiden Zeilen zu Ihrer .bashrc-Datei hinzu
TESTVAR="no export"
export MYTESTVAR="with export"
Öffnen Sie dann eine neue Shell.
Laufen echo $TESTVAR
und echo $MYTESTVAR
wird den Inhalt der einzelnen Variablen zeigen. Entfernen Sie nun innerhalb derselben Shell diese beiden Zeilen aus Ihrer .bashrc-Datei und führen Sie sie aus bash
, um eine Subshell zu starten.
Beim Ausführen echo $TESTVAR
wird eine leere Ausgabe echo $MYTESTVAR
angezeigt, beim Ausführen wird jedoch "mit Export" angezeigt.