[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
5. Umgebungsvariablen
Inhalt:
5.a. Umgebungsvariablen
Was sind Umgebungsvariablen?
Eine Umgebungsvariable ist ein Objekt mit vorgegebenem Namen, welches
Informationen für eine oder mehrere Anwendungen bereitstellt. Viele
Benutzer (speziell diejenigen, die neu in Linux sind) finden dies etwas
seltsam oder schlecht handhabbar. Diese Annahme ist ein Fehler: Durch
Verwendung von Umgebungsvariablen kann die Konfigurationseinstellung
von einem oder mehreren Programmen sehr einfach geändert werden.
Wichtige Beispiele
Die folgende Tabelle enthält einige Variablen, die in einem Linux-System
verwendet werden und beschreibt deren Bedeutung. Einige Beispiele werden
im Anschluss an die Tabelle dargestellt.
| Variable |
Beschreibung |
| PATH |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen Ihr System nach ausführbaren Dateien schaut.
Wenn Sie den Namen einer ausführbaren Datei, wie zum Beispiel ls,
rc-update oder emerge eingeben und sich diese Datei nicht
in einem der Verzeichnisse dieser Liste befindet, wird sie nicht
ausgeführt, es sei denn, Sie geben den vollständigen Pfad an
(z.B. /bin/ls).
|
| ROOTPATH |
Diese Variable hat die gleiche Funktion wie PATH, aber hier werden
die Verzeichnisse aufgelistet, die durchsucht werden, wenn man als root
einen Befehl eingibt.
|
| LDPATH |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen Ihr dynamischer Linker nach System-Bibliotheken
sucht.
|
| MANPATH |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen der man Befehl nach der entsprechenden
man-page sucht.
|
| INFODIR |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen der info Befehl nach der entsprechenden
info Seite sucht.
|
| PAGER |
Diese Variable enthält den Pfad zu dem Standard-Programm, welches zur
Anzeige von Dateiinhalten verwendet wird (z.B. less oder
more).
|
| EDITOR |
Diese Variable enthält den Pfad zu dem Standard-Programm, welches zur
Bearbeitung von Dateien verwendet wird (z.B. nano oder vi).
|
| KDEDIRS |
Diese Variable enthält eine durch Doppelpunkte getrennte Liste von
Verzeichnissen, in denen KDE-spezifisches Material enthalten ist.
|
| CONFIG_PROTECT |
Diese Variable enthält eine durch Leerzeichen getrennte Liste von
Anwendungen, die bei Aktualisierungen durch Portage nicht angetastet
werden.
|
| CONFIG_PROTECT_MASK |
Diese Variable enthält eine durch Leerzeichen getrennte Liste von
Anwendungen, die durch Aktualisierungen von Portage nicht geschützt sind.
|
Hier finden Sie eine Beispieldefinition der oben vorgestellten Variablen:
Befehlsauflistung 1.1: Beispielsdefinition |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
5.b. Variablen global definieren
Das /etc/env.d Verzeichnis
Um die einzelnen Definitionen der Variablen zentralisieren zu können,
wurde in Gentoo das /etc/env.d Verzeichnis angelegt.
Innerhalb dieses Verzeichnisses finden Sie einige Dateien, wie zum
Beispiel 00basic, 05gcc, etc. welche
die Variablen der einzelnen Applikationen enthalten.
In unserem Beispiel wird, wenn Sie gcc installieren,
die Datei 05gcc von dem ebuild angelegt und enthält
die Definition folgender Variablen:
Befehlsauflistung 2.1: /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
In anderen Linux Distributionen werden solche Variablen in
/etc/profile geändert oder hinzugefügt. Gentoo hingegen macht es
so für Sie (und für Portage) deutlich einfacher die Umgebungsvariablen zu
verwalten, ohne auf die vielen verschiedenen Dateien, welche
Umgebungsvariablen enthalten können, eingehen zu müssen.
In unserem Fall wird, wenn ein Update von gcc durchgeführt wird, die
Datei /etc/env.d/05gcc automatisch aktualisiert, ohne den Benutzer
unnötig damit konfrontieren zu müssen.
Von dieser Methode profitiert nicht nur Portage sondern auch Sie als Benutzer.
Gelegentlich werden Sie gefragt, ob Sie eine bestimmte Umgebungsvariable
systemweit setzen wollen. Zum Beispiel bei der Variable http_proxy.
Anstatt sich mit /etc/profile auseinander zu setzen müssen, legen
Sie einfach eine entsprechende Datei (/etc/env.d/99local) an
und tragen darin die gewünschten Definitionen ein:
Befehlsauflistung 2.2: /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
Indem Sie dieselbe Datei für alle Variablen verwenden, haben Sie einen
schnellen Überblick über alle Variablen, die Sie selbst gesetzt haben.
Das env-update Skript
Einige Dateien in /etc/env.d definieren die Variable PATH.
Dies ist kein Fehler: Wenn Sie env-update ausführen, wird es die
ganzen zusätzlichen Definitionen anhängen, bevor es die Umgebungsvariablen
aktualisert. Somit wird es den Benutzern (oder Entwicklern) sehr einfach
gemacht, eigene Umgebungsvariablen hinzuzufügen, ohne sich mit den bestehenden
Werten herumschlagen zu müssen.
Das env-update Skript wird diese Werte in alphabetischer Reihenfolge der
/etc/env.d Dateien hinzufügen. Die Dateinamen müssen mit einer
zweistelligen Dezimalzahl beginnen.
Befehlsauflistung 2.3: Update-Reihenfolge von env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Die Verkettung von Variablen geschieht nicht bei allen, sondern nur bei
folgenden Variablen:
ADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH,
KDEDIRS, PATH, LDPATH, MANPATH,
INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT,
CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK,
PKG_CONFIG_PATH und PYTHONPATH.
Für alle anderen Variablen wird der zuletzt definierte Wert (in alphabetischer
Reihenfolge der Dateien in /etc/env.d) verwendet.
Sie können dieser Liste weitere Variablen hinzufügen indem Sie den
Variablennamen zu einer der Variablen COLON_SEPARATED und
SPACE_SEPARATED (ebenfalls in einer env.d Datei) hinzufügen.
Wenn Sie env-update ausführen, wird das Skript alle Umgebungsvariablen
erstellen und sie in /etc/profile.env ablegen (welches von
/etc/profile verwendet wird). Zusätzlich wird es die Informationen
aus der LDPATH Variable verwenden, um /etc/ld.so.conf
anzulegen. Anschließend wird es ldconfig ausführen, um für
den dynamischen Linker die Datei /etc/ld.so.cache neu
zu erstellen.
Um sofort von den Änderungen in env-update profitieren zu können, ohne
das System neu zu booten, müssen Sie nur folgenden Befehl ausführen. Den
meisten Benutzern wird er noch von der Installationsanleitung her bekannt sein:
Befehlsauflistung 2.4: Umgebungsvariablen aktualisieren |
# env-update && source /etc/profile
|
Notiz:
Der obige Befehl aktualisiert nur die Variablen im aktuellen Terminal,
in neuen Konsolen und in deren Nachfolgern. Daher müssen Sie, wenn Sie
mit X11 arbeiten, entweder source /etc/profile in jedem neuen Terminal,
dass Sie öffnen, eintippen oder X neustarten, damit alle Terminals per source
die neuen Variablen erhalten. Wenn Sie einen Loginmanager verwenden, müssen
Sie root werden und /etc/init.d/xdm restart eintippen. Wenn nicht, dann
müssen Sie sich ausloggen und wieder einloggen damit X Nachfolger mit den
neuen Variablenwerten erzeugt.
|
Wichtig:
Sie können Shell-Variablen nicht verwenden, wenn Sie andere Variablen
definieren. Das bedeutet, dass Dinge wie FOO="$BAR" (wo $BAR eine
weitere Variable ist) nicht erlaubt sind.
|
5.c. Variablen lokal definieren
Benutzerspezifisch
Nicht immer wollen Sie eine Umgebungsvariable global definieren. Wenn Sie zum
Beispiel /home/mein_benutzer/bin und das momentane
Arbeitsverzeichnis (das Verzeichnis in dem Sie sich befinden) zu der
PATH Variable hinzufügen wollen, es aber nicht allen anderen Benutzern
ebenfalls in ihre PATH Variable schreiben wollen, dann sollten Sie die
Variable in ~/.bashrc oder ~/.bash_profile lokal
definieren:
Befehlsauflistung 3.1: Erweitern des PATH für lokale Verwendung in ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Wenn Sie sich nun erneut anmelden, werden Ihre PATH Variablen
aktualisiert.
Sitzungsspezifisch
Mannchmal müssen die einzelnen Definitionen noch strikter gehandhabt werden.
Wenn Sie zum Beispiel Binärdateien von einem temporär angelegtem Verzeichnis
verwenden wollen, ohne den Pfad zu den entsprechenden Daten anzulegen, oder
~/.bashrc für diesen Verwendungszweck extra abändern zu müssen.
In diesem Fall können Sie PATH für Ihre aktuelle Sitzung mit dem
export Befehl setzen. Diese Einstellungen bleiben Ihnen bis zum nächsten
Logout erhalten.
Befehlsauflistung 3.2: Setzen einer sitzungsspezifischen Variable |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
[ << ]
[ < ]
[ Hauptseite ]
[ > ]
[ >> ]
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|