Wie kann ich Umgebungsvariablen hinzufügen?

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.

Lösung

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.

Kommentare (7)

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

Kommentare (1)

Um eine neue Umgebungsvariable in Ubuntu dauerhaft hinzuzufügen (nur in 14.04 getestet), führen Sie die folgenden Schritte aus:

  1. Öffnen Sie ein Terminal (durch Drücken von StrgAltT)
  2. sudo -H gedit /etc/environment`
  3. Geben Sie Ihr Passwort ein
  4. Bearbeiten Sie die soeben geöffnete Textdatei: Wenn Sie z.B. FOO=bar hinzufügen wollen, dann schreiben Sie einfach FOO=bar in eine neue Zeile
  5. Speichern Sie die Datei
  6. Sobald sie gespeichert ist, loggen Sie sich aus und wieder ein.
  7. Die von Ihnen gewünschten Änderungen werden vorgenommen.
Kommentare (5)