Gentoo Logo

Haftungsausschluss: Dieses Handbuch wurde durch eine neuere Version ersetzt und wird nicht länger gepflegt.


[ << ] [ < ] [ 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

(Ein Doppelpunkt gefolgt von keinem Verzeichnis wird als das momentane Arbeitsverzeichnis angesehen)
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 ] [ > ] [ >> ]


Drucken

Alles ansehen

Seite aktualisiert 29. Juni 2012

Diese Übersetzung wird nicht länger gepflegt

Zusammenfassung: Mit Gentoo können Sie die Umgebungsvariablen Ihres Systems ganz einfach bearbeiten. Dieses Kapitel erklärt häufig gebrauchte Umgebungsvariablen und wie Sie mit diesen umgehen.

Sven Vermuelen
Autor

Grant Goodyear
Autor

Roy Marples
Autor

Daniel Robbins
Autor

Chris Houser
Autor

Jerry Alexandratos
Autor

Seemant Kulleen
Gentoo x86 Entwickler

Tavis Ormandy
Gentoo Alpha Entwickler

Jason Huebel
Gentoo AMD64 Entwickler

Guy Martin
Gentoo HPPA Entwickler

Pieter Van den Abeele
Gentoo PPC Entwickler

Joe Kallar
Gentoo SPARC Entwickler

John P. Davis
Bearbeiter

Pierre-Henri Jondot
Bearbeiter

Eric Stockbridge
Bearbeiter

Rajiv Manglani
Bearbeiter

Jungmin Seo
Bearbeiter

Stoyan Zhekov
Bearbeiter

Jared Hudson
Bearbeiter

Colin Morey
Bearbeiter

Jorge Paulo
Bearbeiter

Carl Anderson
Bearbeiter

Jon Portnoy
Bearbeiter

Zack Gilburd
Bearbeiter

Jack Morgan
Bearbeiter

Benny Chuang
Bearbeiter

Erwin
Bearbeiter

Joshua Kinard
Bearbeiter

Tobias Scherbaum
Bearbeiter

Xavier Neys
Bearbeiter

Joshua Saddler
Bearbeiter

Gerald J. Normandin Jr.
Korrektor

Donnie Berkholz
Korrektor

Ken Nowack
Korrektor

Lars Weiler
Mitarbeiter

Tobias Scherbaum
Übersetzer

Jens Schittenhelm
Übersetzer

Patrick Sudowe
Übersetzer

Torsten Veller
Übersetzer

Michael Frey
Übersetzer

Markus Nigbur
Übersetzer

Boris Ruppert
Übersetzer

Jan Hendrik Grahl
Übersetzer

Christian Hartmann
Korrektor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.