Ich benutze Ubuntu 11.04. Ich benutze das Terminal, um eine Bash-Sitzung zu starten, und ich möchte eine Umgebungsvariable hinzufügen:
$r@hajt:~$ env THEVAR=/example
Aber es'klappt nicht. Es zeigt alle Variablen an, wobei THEVAR die letzte ist, aber ein weiterer Aufruf von env
zeigt THEVAR
nicht mehr an - env | grep THEVAR
liefert nichts.
Ebenso fügen Skripte mit Export (export THEVAR=/example
) oder anderen Variablenzuweisungen (THEVAR=/example
) die Umgebungsvariable nicht hinzu.
Ich weiß, dass ich etwas falsch mache, ich weiß, dass es etwas Einfaches sein sollte, aber ich kann einfach nicht herausfinden, was.
UPDATE: Die eigentliche Bedeutung meiner Frage war diese: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Wie auch immer, ich wähle die Antwort mit den meisten Stimmen und lasse den bearbeiteten Titel stehen - das war nicht meine Frage)
env
führt ein Programm in einer veränderten Umgebung aus und verwirft dann alle Änderungen.
Um die Variable nur für die aktuelle Shell zu setzen:
VARNAME="my value"
Um sie für die aktuelle Shell und alle von der aktuellen Shell gestarteten Prozesse zu setzen:
export VARNAME="my value" # shorter, less portable version
Um sie permanent für alle zukünftigen Bash-Sitzungen zu setzen, fügen Sie diese Zeile zu Ihrer .bashrc
-Datei in Ihrem $HOME
-Verzeichnis hinzu.
Um sie dauerhaft und systemweit (alle Benutzer, alle Prozesse) zu setzen, fügen Sie die Variable set in /etc/environment ein:
sudo -H gedit /etc/environment
Diese Datei akzeptiert nur Variablenzuweisungen wie:
VARNAME="my value"
Verwenden Sie hier nicht das Schlüsselwort export
.
Sie müssen sich vom aktuellen Benutzer abmelden und erneut anmelden, damit die Umgebungsvariablen geändert werden können.
Um eine Umgebungsvariable einmal zu setzen, verwenden Sie den Befehl export
in der Eingabeaufforderung, nicht in einem Shell-Skript:
$ export THEVAR=/example
Die Variable bleibt dann für den Rest der Shell-Sitzung oder bis zu ihrer Aufhebung gesetzt.
Um eine Umgebungsvariable jedes Mal zu setzen, verwenden Sie den Befehl export
in der Datei .bashrc
(oder der entsprechenden Initialisierungsdatei für Ihre Shell).
Um eine Umgebungsvariable von einem Skript aus zu setzen, verwenden Sie den Befehl export
in dem Skript, und geben Sie dann das Skript source
. Wenn Sie das Skript ausführen, wird es nicht funktionieren.
Für eine Erklärung des Unterschieds zwischen "sourcen" und "ausführen" siehe diese Antwort: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Um eine neue Umgebungsvariable in Ubuntu dauerhaft hinzuzufügen (nur in 14.04 getestet), führen Sie die folgenden Schritte aus:
FOO=bar
hinzufügen wollen, dann schreiben Sie einfach FOO=bar
in eine neue Zeile