Dies ist ein Auszug aus der Bash-Manpage:
export [-fn] [name[=wort]] ...
export-p
Die gelieferten Namen sind für den automatischen Export in die Umgebung nachfolgend ausgeführter Befehle markiert. Wenn die Option -f angegeben ist, beziehen sich die Namen auf Funktionen...
Wenn Sie die Variable nur in der aktuellen Umgebung benötigen, ist es nicht notwendig, export.
zu verwendenvar=value
Bearbeiten:
Ohne Export:nur aktuelle Umgebung. Mit Export:aktuelle Umgebung und untergeordnete Umgebungen.
Hier ist eine Demonstration der Auswirkungen des Exports auf die Verfügbarkeit einer Variablen in einer untergeordneten Umgebung und dass Änderungen in der untergeordneten Umgebung die übergeordnete Umgebung nicht beeinflussen:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Nach dem ersten Echo (echo "parent..."
) sehen Sie "123" und "456", weil beide var1
und var2
sind im aktuellen Umfeld aktiv. Sie sehen keinen Wert für var3
weil es noch nicht eingestellt ist.
Nach der Zeile, die mit „var3=...
" Sie sehen keinen Wert für var1
weil es nicht exportiert wurde. Sie tun siehe einen Wert für var2
weil es war exportiert. Sie sehen einen Wert für var3
weil es nur für die untergeordnete Umgebung festgelegt wurde .
(bash -c
entspricht dem Ausführen eines Skripts mit dem Inhalt des Arguments für -c
Möglichkeit. Ein Skript oder eine andere ausführbare Datei oder in diesem Fall das Argument für bash -c
wird ein Kind der aktuellen Umgebung, die folglich natürlich der Elternteil des Kindes ist.)
Im "Skript" werden die Werte der Variablen geändert. Es gibt nun diese neuen Werte aus.
Sobald das "Skript" beendet ist, kehrt die Ausführung zur übergeordneten Umgebung (in diesem Fall zur Befehlszeile) zurück. Nach dem letzten Echo sehen Sie die ursprünglichen Werte, da die in der untergeordneten Umgebung vorgenommenen Änderungen die übergeordnete Umgebung nicht beeinflussen.
Das sagst du
Ich verwende immer den Exportbefehl, um die Umgebungsvariable zu setzen
So wie Sie das formuliert haben, klingt es so, als wollten Sie wirklich fragen, wie Sie eine Umgebungsvariable dauerhaft machen. Dazu müssten Sie Ihren export VAR="foo"
platzieren -Anweisung in Ihrer $HOME/.bash_profile-Datei (wenn Sie bash verwenden). Wenn Sie möchten, dass diese Umgebungsvariable für alle Benutzer außer root bestehen bleibt, fügen Sie sie zu /etc/profile hinzu. Wenn Sie möchten, dass es auch für den Root-Benutzer hinzugefügt wird, legen Sie es in /root/.bash_profile fest.
Dies funktioniert für alle Login-Shells, bei denen Bash die Shell der Wahl ist. Für Nicht-Login-Shells müssen Sie .bashrc verwenden. Für andere Muscheln habe ich keine Erkenntnisse zu bieten :D