Mögliches Duplikat:
Unterschied zwischen "a = b" und "export a = b" in bash
Es ist schwer zuzugeben, aber ich habe nie wirklich verstanden, was genau export
mit einer Umgebungsvariablen geschieht. Ich weiß, dass ich eine Variable in untergeordneten Prozessen manchmal nicht sehen kann, wenn ich sie nicht exportiere, aber manchmal scheint es, als ob ich es kann. Was ist wirklich los, wenn ich sage
export foo=5
und wann soll ich keine variable exportieren
bash
export
shell-script
Chas. Owens
quelle
quelle
export
Anweisungen zu .bashrc / .bash_profile, um persistente globale Variablen ähnlich wie zu erstellen$HOME
.Antworten:
Von
man bash
:quelle
Exportierte Variablen werden an untergeordnete Prozesse weitergegeben, nicht exportierte Variablen nicht.
quelle
PYTHONPATH
) und dann feststellen, dass es, obwohl Sie könnenecho $PYTHONPATH
, erst von Python- oder Bash-Skripten erkannt wird , wenn Sieexport
es$BASHPID
), und dennoch können Sie nicht exportierte Variablen aus der Parent-Shell lesen. Einfacher Beweis:x="y"; echo "$BASHPID: $x"; (echo "$BASHPID: $x")
Ich vermute, dass dies ein Sonderfall ist, der auftritt, wenn der untergeordnete Prozess eine Unterschale ist.Wenn Sie verwenden
export
, fügen Sie die Variable der Umgebungsvariablenliste der Shell hinzu, in der der Exportbefehl aufgerufen wurde, und alle Umgebungsvariablen einer Shell werden an die untergeordneten Prozesse übergeben. Deshalb können Sie sie verwenden.Wenn Sie die Shell beenden, wird ihre Umgebung zerstört. Aus diesem Grund werden die Umgebungsvariablen beim Anmelden deklariert und exportiert, beispielsweise in der .bashrc-Datei
quelle