it-swarm.com.de

Was macht der Export in BASH?

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 macht. 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 eine variable nicht exportieren

71
Chas. Owens

Von man bash:

UMGEBUNG

Wenn ein Programm aufgerufen wird, erhält es ein Array von Zeichenfolgen, die als Umgebung bezeichnet werden. Dies ist eine Liste von Name-Wert-Paaren in der Form name = value.

Die Shell bietet verschiedene Möglichkeiten, die Umgebung zu manipulieren. Beim Aufruf durchsucht die Shell ihre eigene Umgebung und erstellt für jeden gefundenen Namen einen Parameter, der automatisch für den Export in untergeordnete Prozesse markiert wird. Ausgeführte Befehle erben die Umgebung. Mit den Befehlen export und declare -x können Parameter und Funktionen zur Umgebung hinzugefügt und daraus gelöscht werden. Wenn der Wert eines Parameters in der Umgebung geändert wird, wird der neue Wert Teil der Umgebung und ersetzt den alten. Die Umgebung, die von einem ausgeführten Befehl geerbt wird, besteht aus der anfänglichen Umgebung der Shell, deren Werte in der Shell geändert werden können, abzüglich der durch den Befehl unset entfernten Paare sowie aller Ergänzungen über die Befehle export und declare -x.

15
sml

Exportierte Variablen werden an untergeordnete Prozesse weitergegeben, nicht exportierte Variablen nicht.

94
BloodPhilia

Wenn Sie export verwenden, 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

20
alfredozn