Der export Befehl, den man auf der Linux-Kommandozeile bei Shells aus der Familie der Bourne-Shells findet, dient dazu, Variablen als global zu kennzeichnen. Das heißt, sie werden in die Umgebung (Environment) exportiert. C-Shells verwenden hierfür den Befehl setenv.
Bei Kommandozeileninterpretern (Shells) können Sie im Allgemeinen die Funktion des Interpreters, sowie von Programmen, die Sie durch ihn starten, durch das Setzen von Variablen beeinflussen. Variablen sind Schlüssel-Wert-Paare, meist durch ein Gleichheitszeichen getrennt dargestellt. "HALLO=WELT" bezeichnet demnach eine Variable "HALLO" mit dem Wert "WELT".
Wie bei den meisten Programmiersprachen unterscheiden auch Shells lokale und globale Variablen. Bei Bourne-Shells wie der Bash, die unter Linux am häufigsten verwendet werden, können Sie den Wert von Variablen mit dem Befehl "set" setzen, unabhängig davon, ob es sich um eine lokale oder globale Variable handelt. Ist eine Variable noch nicht definiert, dann wird sie hierbei als lokale Variable angelegt. Mit dem Befehl "export NAME", können Sie die Variable "NAME" dann in die Umgebung exportieren.
Alternativ hierzu können Sie eine globale Variable auch gleich als solche erzeugen und ihr einen Wert zuweisen, indem sie dem Befehl "export" diese Variablenzuweisung, in der oben beschriebenen Form mit dem Gleichheitszeichen, übergeben. Der Befehl "export HALLO=WELT" erzeugt also eine globale Variable mit Namen "HALLO" und weist ihr gleichzeitig den Wert "WELT" zu.
Eine dritte Variante, den export Befehl zu Nutzen ist, export ohne Parameter aufzurufen. Geben Sie keinen Variablennamen zum Exportieren und keine Variablenzuweisung zum Setzen beim Aufruf des export Befehls an, dann zeigt export alle gesetzten globalen Variablen mit ihren Werten an.
Bei der Verwendung globaler Variablen in einer Shell ist zu beachten, dass diese nach der Methode "Call-by-Value" übergeben werden. Das heißt, der aufgerufene Prozess hat eine eigene Kopie der Variablen. Änderungen, die der Unterprozess durchführt, sind also nur in diesem Prozess gültig, der aufrufende Prozess sieht sie nicht. Wenn Sie also auf der Kommandozeile eine neue Shell starten, dann haben die (globalen) Umgebungsvariablen in beiden Shell-Prozessen zunächst dieselben Werte. Änderungen an diesen Variablen sind aber nur jeweils in der Shell sichtbar, in der sie ausgeführt werden. Das gilt auch für das aktuelle Arbeitsverzeichnis.
Diese Tatsache können Sie auf der Kommandozeile und in Shell-Skripten nutzen, wenn Sie solche Änderungen nur für einzelne Befehle vornehmen, und danach wieder mit den alten Werten weiterarbeiten möchten. Sie erreichen das beispielsweise, indem Sie einen Befehl in runde Klammern einschließen. Mit einer Kommandozeile wie "pwd; (cd /tmp && pwd); pwd" können Sie das verdeutlichen.