Im Allgemeinen müssen Sie nur eine Variable exportieren, die ein anderer Prozess in seiner Umgebung sucht. Woher weißt du, welche Variablen das sind? Sie müssen ihre Dokumentation lesen.
Ob eine Variable für den Export markiert ist, macht keine Differenz zur aktuellen Shell.
Lassen Sie uns eine Demonstration konstruieren.
$ printf 'echo "foo=$foo"\n' > script
$ bash script
foo=
$ foo=3
$ bash script
foo=
$ export foo
bash script
foo=3
Das erste Mal und Sekunden Zeit, die Sie script
ausführen, wird foo
in seiner Umgebung nicht definiert, weil seine Eltern-Prozess (der aktuell Shell) nicht foo
nicht ausführte. Beim dritten Aufruf wird die ursprüngliche Umgebung des Skripts um foo
erweitert, da foo
exportiert wurde.
Als Antwort auf Ihren Kommentar hat der Begriff "Umwelt" hier eine sehr genaue Bedeutung. Alle Prozesse, nicht nur Shells, erhalten beim Start ein Array von Strings vom übergeordneten Objekt, das als Umgebung bezeichnet wird. Diesen Zeichenfolgen sind keine bestimmten Semantiken zugeordnet. Es hängt vom empfangenden Programm ab, wie sie zu interpretieren sind. Die Shell ignoriert beispielsweise Zeichenfolgen in ihrer Umgebung, die nicht das Format name=value
haben, wobei name
eine gültige Shell-ID ist. Für jede solche Zeichenfolge definiert die Shell eine Shellvariable mit dem angegebenen Namen und Wert und kennzeichnet ihr Exportattribut. Das meinen wir mit einer Umgebungsvariablen. Sie können eine reguläre Shell-Variable auch jederzeit mithilfe des Befehls export
an eine Umgebungsvariable "heraufstufen". Dies hat jedoch keinen Einfluss auf die Bedeutung der Variablen im aktuellen Prozess.
Wenn ein Prozess einen neuen Prozess erstellt, wird eine Kopie seiner Umgebung an den neuen Prozess übergeben. Die Shell erzeugt zusätzlich name=value
Strings, die von jeder ihrer Umgebungsvariablen weitergeleitet werden.
Scope! = Prozess. Eine Shellvariable ist für alle untergeordneten Bereiche innerhalb desselben Prozesses verfügbar, ohne sie zu exportieren. – chepner
@chepner Verstanden. Ich schätze, wie kommt dann der Export ins Spiel? – vkapustin