Exportierte Variablen werden in die Umgebung von Befehlen übertragen, die von der Shell ausgeführt werden, die sie exportiert hat, während nicht exportierte Variablen für den aktuellen Shell-Aufruf lokal sind. Von der export
Manpage:
Die Shell muss den Variablen, die den angegebenen Namen entsprechen, das Exportattribut geben, wodurch sie sich in der Umgebung von nachfolgend ausgeführten Befehlen befinden.
set
gibt die aktuelle Umgebung aus, die alle lokalen nicht exportierten Variablen enthält. env
wird verwendet, um Programme in einer neuen Umgebung zu starten. Ohne Argumente wird ausgegeben, wie diese neue Umgebung aussehen würde. Da env
eine neue Umgebung erstellt wird, werden nur exportierte Variablen durchgelassen, wie dies bei jedem Programm der Fall ist, das von dieser Shell aus gestartet wird. Zum Beispiel, eine zweite Shell innerhalb der ersten $$
zu erzeugen (ich habe Eingabeaufforderungen in der inneren Shell dargestellt):
$ FOO=BAR
$ bash
$$ echo $FOO # Note the empty line
$$ exit
$ export FOO
$ bash
$$ echo $FOO
BAR
$$
Beachten Sie, dass die Variable exportiert wird und nicht nur der Wert. Dies bedeutet , dass , wenn Sie export FOO
, FOO
eine globale Variable und zeigt sich in den folgenden Umgebungen wird, auch wenn später geändert:
$ export FOO
$ FOO=BAR
$ bash
$$ echo $FOO
BAR
$$