Sie können Shell-Variablen mit einfachen Zuordnungen
$ foo="fooval"
$ echo $foo
fooval
Diese Variablen initialisiert werden nicht an unabhängige Kindprozesse verteilt:
$ foo=fooval
$ sh -c 'printf "\"%s\"" $foo'
""
, um sie zu verbreiten, müssen Sie sie in den Prozess der Export (Shells) Umgebung (machen Sie sie zu "Umgebungsvariablen" (diese werden üblicherweise großgeschrieben, dh FOO
anstelle von foo
)
$ export foo
$ sh -c 'echo $foo'
fooval
Sie können in einem Schritt zuordnen und Export:
$ export foo=fooval
Umgebungsvariablen werden nie wieder irgendwo, sondern auf der Prozesshierarchie verteilt. (Nur für Kinder, nie an die Eltern oder völlig unabhängige Prozesse) Deshalb, wenn Sie ein Skript mit Variablenzuweisungen haben, müssen Sie es beziehen, nicht ausführen:
$ ./envvars #won't affect the parent shell
$ . ./envvars #this will
Es gibt keine pro-terminalen Variablen (Es gibt jedoch per-Terminal-Konfigurationen mit festen Tasten zugänglich manipulierbar mit dem stty
Werkzeug).
Warum denkst du, dass es nicht funktioniert? – hsz
Sie können die übergeordnete Umgebung nicht ändern. Geben Sie das Skript an, anstatt es auszuführen, wenn Sie einige Variablen in der * aktuellen * Sitzung festlegen möchten. –