Was ist der Unterschied zwischen:
a=b
und
export a=b
In Bash?
Ich verstehe, dass beide Umgebungsvariablen definieren, aber ich verstehe den Unterschied nicht vollständig.
bash
shell
process
environment-variables
Adam Matan
quelle
quelle
Antworten:
export
Leitet die Variable an Unterprozesse weiter.Zum Beispiel, wenn Sie es getan haben
dann würde ein auf FOO überprüfter Unterprozess die Variable while nicht finden
würde es dem Unterprozess ermöglichen, es zu finden.
Wenn dies
FOO
jedoch bereits als Umgebungsvariable definiert wurde,FOO=bar
wird der Wert dieser Umgebungsvariablen geändert.Zum Beispiel:
Ältere Shells unterstützten die
export FOO=bar
Syntax nicht. Sie hatte zu schreibenFOO=bar; export FOO
.quelle
export
" nicht verwenden , definieren Sie keine Umgebungsvariable, sondern nur eine Shell-Variable. Shell-Variablen stehen nur dem Shell-Prozess zur Verfügung. Umgebungsvariablen stehen für jeden nachfolgenden Prozess zur Verfügung, nicht nur für Shells. Subshells sind außerdem Befehle in Klammern, die Zugriff auf Shell-Variablen haben, während Sie von untergeordneten Prozessen sprechen, die zufällig Shells sind.Wenn Sie nicht verwenden
export
, definieren Sie keine Umgebungsvariable. nur eine Shell-Variable.Shell-Variablen stehen nur dem Shell-Prozess zur Verfügung. Umgebungsvariablen stehen für jeden nachfolgenden Prozess zur Verfügung, nicht nur für Shells.
quelle
Wenn Sie möchten, dass die Variable für die aufrufende Shell verfügbar ist, ohne den Export zu verwenden, können Sie Folgendes tun:
Die Datei a.ksh lautet -
Führen Sie dies an der Eingabeaufforderung aus
Dadurch werden die Befehle in derselben Shell ausgeführt und $ FOO ist verfügbar.
Wohingegen,
Wird $ FOO nur innerhalb von a.ksh verfügbar machen, nach dem Aufruf von a.ksh würde es nicht existieren.
quelle
Zusätzlich zu dem, was bereits beantwortet wurde, definieren diese beiden Anweisungen nicht notwendigerweise eine Umgebungsvariable (dh create vs set), da "a" möglicherweise bereits als Shell- oder Umgebungsvariable vorhanden ist.
Im letzteren Fall sind beide Aussagen absolut gleichwertig.
quelle