ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Umgebungsvariable

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Die Umgebungs-Variable (Environment-Variable) wird z.B. für Komfortfunktionen in der Shell[1] verwendet, um Suchpfade zu Programmen oder eine zentrale Proxykonfiguration zu setzen.

Environment-Variablen werden bei der Prozessgenerierung "vererbt", d.h. Kindprozesse bekommen eine Kopie des Environments des Vaterprozesses und vererben diese auch wieder an ihre Kinder weiter.

Es gibt unterschiedliche Möglichkeiten, Variablen zu definieren; das ist vom beabsichtigten Zweck abhängig. Entweder definiert man Variablen nur für die aktuelle Sitzung - dann ist sie nur bis zum nächsten Neustart gültig - oder, wenn Variablen bei jedem Systemstart automatisch gesetzt werden sollen, kann man diese in den entsprechenden Dateien eintragen. Die Syntax ist jedoch immer gleich:

VARIABLE=Wert-der-Variable

Mit dem Kommando echo kann man sich den Variableninhalt ausgeben lassen:

echo $VARIABLE 
Wert-der-Variable

Mit printenv kann man alle Variablen auf einmal ansehen.

Das Kommando export sorgt dafür, dass die Variable nicht nur in der aktuellen Shell, sondern auch in den von der Shell aus aufgerufenen Programmen zur Verfügung steht:

export VARIABLE 

Man kann das alles auch in eine einzige Zeile packen:

export VARIABLE=0815 

Dauerhafte Änderungen

Wie gesagt gelten solche Variablen nur für die aktuelle Sitzung. Variablen lassen sich jedoch auch dauerhaft definieren:

Hinweis:

Die Variablen müssen in den Dateien auch mit dem Befehl export definiert werden.

Systemweite Änderung

Je nach dem, ob man sich grafisch einloggt, über einen Displaymanager oder über eine Textkonsole, sollte man die Variablen auf unterschiedliche Weise setzen.

Grafischer Login

Hier ist die Datei 90environment im Verzeichnis /etc/X11/Xsession.d zu erstellen. Die Umgebungsvariablen können dann dort eingetragen werden.

Hinweis:

Die Variable LD_LIBRARY_PATH lässt sich nicht auf diese Weise setzen. In diesem Fall sollte man eine der anderen hier vorgestellten Methoden nutzen oder ein Wrapper-Skript schreiben, welches die Variable vor Ausführen des jeweiligen Programms setzt.

Alternative ohne erweiterte Rechte

Will man sich als Benutzer eigene Umgebungsvariablen setzten die nur unter X greifen, müssen diese in der Datei ~/.xsessionrc gesetzt werden. Diese überschreiben Variablen aus ~/.profile, ersetzen diese aber nicht auf der Konsole.

echo export FOO=bar >> ~/.xsessionrc 

Login über Textkonsole

Die Umgebungsvariablen lassen sich in /etc/profile einstellen. Einige Umgebungsvariablen (PATH, PS1) sind dort bereits voreingestellt. Am einfachsten ist es, diese Variablen wunschgemäß anzupassen. Es empfiehlt sich dabei, die Original-Einstellungen nur auszukommentieren, um sie jederzeit wieder verfügbar zu haben. Alternativ kann man Variablen in der Datei /etc/environment eintragen.

Änderung für einen Benutzer

Alle Umgebungsvariablen sollte man in der Datei ~/.profile setzen.

Hinweis:

Existiert eine Datei ~/.bash_profile, so wird ~/.profile von der Bash (Standard-Shell) ignoriert. Auch die Einstellungen in ~/.bashrc überschreiben in der Bash die Einstellungen aus ~/.profile.

Die Änderungen in der Datei ~/.profile können ohne Neustart der Bash durch folgenden Befehl übernommen werden:

source ~/.profile 

Es ist auch möglich, die Einträge in ~/.bashrc vorzunehmen. Dies ist jedoch in der Regel unnötig aufwändig, da dort enthaltene Befehle bei jedem Start einer bash ausgeführt werden. Da die Environment-Variablen aber vererbt werden, ist dies nur einmal bei der Login-Shell notwendig, alle darunter gestarteten Bash-Prozesse erben dann die Settings von dieser.

Hinweis:

Für viele Terminal-erfahrene Benutzer ist es irritierend, dass unter Ubuntu-GNOME standardmäßig die Dateien ~/.bash_profile bzw. ~/.profile nicht ausgewertet werden. Um das "normale" Verhalten zu bekommen, kann man einfach im Kontextmenü (rechte Maustaste rechte Maustaste) des GNOME-Terminals das "momentan verwendete Profil bearbeiten" und im Reiter "Titel und Befehl" die Option "Befehl als Login-Shell starten" anwählen.

Häufige Anwendungsfälle

PATH erweitern

In der Variable $PATH sind die Verzeichnisse hinterlegt, die bei einem Programmaufruf nach dem entsprechenden Programm durchsucht werden.

Soll z.B. /usr/local/progdir zusätzlich im Suchpfad aufgenommen werden, lässt sich dies folgendermaßen bewerkstelligen:

PATH=$PATH:/usr/local/progdir
export PATH 

Damit wird an der existierenden Variable PATH am Schluss ein weiterer Suchpfad /usr/local/progdir (durch einen Doppelpunkt getrennt) angehängt. Mit dem export-Kommando der Shell wird dann diese Variable ins Environment geschrieben.

Dieser Befehl wirkt allerdings nur temporär. Um PATH dauerhaft zu erweitern muss die Datei /etc/environment editiert werden.

Proxy definieren

Erfolgt die Verbindung mit dem Internet über einen Proxy, so lässt sich dies in folgender Weise einstellen:

export http_proxy=http://mein.proxy.firma 

oder mit Portangabe

export http_proxy=http://mein.proxy.firma:3128 

Analog funktioniert das auch mit ftp_proxy für FTP.

Locale

Über die Locale-Umgebungs-Variablen lassen sich Meldungen in Landessprache (Ausgabe und Fehlermeldungen) von Programmen einstellen.

LANG=de_DE.utf8
export LANG 

human-readable BLOCK_SIZE

Viele GNU Programme (df, du, ls usw.) zeigen Größen in "blocks" an. Diese Anzeige, der block-Größe, kann man so abändern, das sie leichter zu lesen ist.

BLOCK_SIZE=human-readable 

Das Vererben (export), dieser Variable ist jedoch nicht ratsam, damit die Ausgabe in Shell-Skripten etc. weiterhin stimmt.

Programmkontext manipulieren

Einem Programm können beim Aufruf einmalig veränderte oder neue Umgebungsvariablen mitgegeben werden. Diese haben Vorrang gegenüber vererbten Werten. Vergleiche:

gcc --help 

und

LANG="en_GB" gcc --help 

Auf diese Weise ist es möglich, für einen spezifischen Aufruf einem Programm englischsprachige Ausgaben zu entlocken, die man z.B. in internationalen Hilfeforen verwenden kann. Die Standardlokalisierung kann mit "C" angesprochen werden:

LANG=C LC_ALL=C gcc --help 

ubuntuusers.local › WikiUmgebungsvariable