Eine Kopie der Umgebung breitet sich in Unterschalen aus. Dies funktioniert also wie folgt:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
Da es sich jedoch um eine Kopie handelt, können Sie diesen Wert nicht auf die übergeordnete Shell übertragen - zumindest nicht durch Ändern der Umgebung.
Es hört sich so an, als ob Sie tatsächlich einen Schritt weiter gehen möchten, nämlich etwas, das sich wie eine globale Variable verhält und von "Geschwister" -Shells gemeinsam genutzt wird, die separat vom übergeordneten Element initiiert wurden - wie Ihr neuer Tab in Gnome Terminal.
Meistens lautet die Antwort "Sie können nicht, weil Umgebungsvariablen nicht so funktionieren". Es gibt jedoch noch eine andere Antwort: Sie können immer etwas auf den Kopf stellen. Ein Ansatz wäre, den Wert der Variablen in eine Datei zu schreiben ~/.myvar
und ihn dann in die Datei einzuschließen ~/.bashrc
. Dann beginnt jede neue Shell mit dem Wert, der aus dieser Datei gelesen wurde.
Sie können noch einen Schritt weiter gehen - geben Sie ~/.myvar
das Format ein MYVAR=200
und legen Sie fest PROMPT_COMMAND=source ~/.myvar
, dass der Wert jedes Mal neu gelesen wird, wenn Sie eine neue Eingabeaufforderung erhalten. Es ist immer noch nicht ganz eine gemeinsame globale Variable, aber es fängt an, wie es zu handeln. Es wird jedoch erst aktiviert, wenn eine Eingabeaufforderung zurückkommt. Dies kann je nach dem, was Sie versuchen, eine ernsthafte Einschränkung darstellen.
Und dann ist es natürlich das nächste, automatisch Änderungen zu schreiben~/.myvar
. Das wird etwas komplizierter, und ich werde an dieser Stelle aufhören, denn Umgebungsvariablen waren eigentlich nicht als Kommunikationsmechanismus zwischen den Shells gedacht, und es ist besser, einfach einen anderen Weg zu finden, dies zu tun.