Mit Umgebungsvariablen richten Sie sich die Kommandozeile individuell und gemütlich ein.
Geben Sie auf der Shell einen Befehl wie ls ein, versteht diese genau, dass Sie das Programm /bin/ls aufrufen möchten. Dass Sie dazu nicht den vollen Pfad eintippen müssen, liegt daran, dass die Bash weiß, in welchen Bereichen im Dateisystem sie nach ausführbaren Programmen suchen muss. Definiert ist diese Suchpfad in einer so genannten Umgebungsvariable. Auch das Aussehen des Shellprompts, die Zeitzone, das Home-Verzeichnis des Benutzers und vieles mehr legen solche Variablen fest.
Die Definition einer Umgebungsvariablen besteht aus drei Teilen: dem Namen, einem Zuweisungsoperator (=) und einem Wert:
variable=wert
Der Name darf Groß- und Kleinbuchstaben sowie Unterstriche und Zahlen enthalten. Einzige Einschränkung: Eine Variable darf nicht mit einer Ziffer beginnen. Enthält der Wert der Variablen Leer- oder Sonderzeichen, müssen Sie die Angabe in doppelte Anführungszeichen einschließen:
LESS="-X"
Tipp
Da sich die Bash (“Bourne Again Shell”) unter Linux als Standardshell durchgesetzt hat, beziehen sich sämtliche in diesem Artikel genannten Beispiele auf diesen Kommandozeileninterpreter.
Willkommen zuhause
Jeder Benutzer eines Linux-Systems findet ein “möbliertes Zimmer” vor, denn die Bash bringt für alle Accounts eine fertig eingerichtete Umgebung mit. Wie diese aussieht, hängt unter anderem von der verwendeten Distribution ab. Welche Variablen es in Ihrem eigenen Zuhause gibt und welchen Wert diese haben, verrät das Kommando env (engl, “environment”, Umgebung). Ein entsprechendes Beispiel zeigt Listing 1.
huhn@asteroid:~$ env TERM=xterm SHELL=/bin/bash USER=huhn LS_COLORS=no=00:fi=00:… PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/home/huhn/bin IRCSERVER=irc.freenode.net LANG=de_DE@euro …
Einige der Variablen, die das Listing zeigt, hat der Benutzer selbst gesetzt (siehe dazu den Abschnitt “Öfter mal was Neues”). Andere Shellvariablen sind vordefiniert, lassen sich aber bei Bedarf verändern. Als Schreibweise hat sich die Verwendung von Großbuchstaben eingebürgert. Die Tabelle “Standard-Umgebungsvariablen der Bash” gibt eine Übersicht häufig verwendeter Variablen für die Bash.
Standard-Umgebungsvariablen der Bash
| Variable | Bedeutung |
|---|---|
CDPATH |
Suchpfad für das Kommando cd |
EDITOR |
Standard-Texteditor |
HISTFILE |
History-Datei, z. B. ~/.bash_history. |
HISTSIZE |
maximale Anzahl der Befehle in der History |
HOME |
Home-Verzeichnis des Benutzeraccounts |
HOSTNAME |
Rechnername |
LANG |
Sprache für Programmausgaben, Datumsformat etc., sofern keine der LC_-Variablen (siehe unten) gesetzt ist. Eine Liste aller definierten Sprachvariablen geben Sie mit dem Befehl locale aus. |
LC_ALL |
Ländereinstellung, etwa C oder de; setzt LANG und alle anderen LC_-Variablen außer Kraft. |
LC_MESSAGES |
Sprache für Programm- und Fehlermeldungen |
LC_TIME |
Zeitformat |
LOGNAME |
Login-Name des Benutzers |
MAIL |
Pfad zur Mailbox des Benutzers (eingehende Post) |
MANPATH |
Suchpfad für Manpages |
PATH |
Suchpfad für ausführbare Dateien |
PS1 |
Aussehen des Standard-Shellprompt; für nicht-privilegierte Benutzer in der Regel \u@\h:\w\$ (huhn@asteroid:~$), für den Administrator \h:\w\$ (asteroid:~#). |
PWD |
Namen des aktuellen Verzeichnisses (engl.: “print working directory”) |
SHELL |
voller Pfadname der verwendeten Shell (/bin/bash) |
TERM |
Terminaleinstellung, etwa xterm oder vt100 |
TZ |
Zeitzone (engl.: “time zone”), etwa. CET oder MET |
In die Schränke geschaut
Um den Wert einer Variablen anzuzeigen, verwenden Sie auf der Kommandozeile den Befehl echo. Mit diesem Kommando geben Sie alles aus, was hinter dem Befehl steht:
huhn@asteroid:~$ echo Huhu Huhu
Darüber hinaus zeigt echo den Wert einer Variablen an, wenn Sie ein Dollarzeichen vor deren Namen stellen:
huhn@asteroid:~$ echo $LANG de_DE@euro huhn@asteroid:~$ echo $PS1 \u@\h:\w\$
Die Shell ersetzt die Variablen $LANG beziehungsweise $PS1 durch deren Wert und ruft dann das Programm echo zur Hilfe, das den Text ausgibt.
Urlaub vom Alltag
Auch wenn alles bequem eingerichtet ist, braucht der Mensch Abwechslung vom Alltag. Möchten Sie Ihre Sprachkenntnisse aufpolieren oder einfach nur etwas Neues ausprobieren, dann starten Sie über den folgenden Aufruf den Browser Firefox in Englisch, auch wenn die Arbeitsumgebung sonst Deutsch spricht:
LANG=en_GB firefox
Abbildung 1 demonstriert, wie Sie temporär in andere Sprachumgebungen reisen. Vor dem eigentlichen Programmaufruf zeigt das Beispiel, wie Sie mit dem Kommando locale -a eine Liste aller möglichen Spracheinstellungen ausgeben.
Öfter mal was Neues
Wie Sie gesehen haben, setzen Sie Variablen ganz einfach neu, indem Sie den Namen, den Zuweisungsoperator und den Wert eingeben. Auf diese Weise definierte Variablen und Werte gelten jedoch nur für die aktuelle Terminalsitzung. Um die Einstellungen zu exportieren, nehmen Sie das Kommando export zur Hilfe. Damit stehen sie auch Kind-Prozessen [1] und Subshells zur Verfügung.
Ein Beispiel: Setzen Sie für die aktuelle Bash die Variablen IRCNICK, IRCNAME und IRCSERVER, um kommandozeilenbasierten IRC-Clients wie Irssi oder BitchX zu verraten, mit welchem Nick und Namen Sie sich automatisch an einem bestimmten IRC-Server anmelden wollen. Starten Sie dann eine zweite Shell aus der ersten heraus und lassen sich den Wert der neuen Variablen anzeigen – wie Sie sehen, sehen Sie nichts. Verlassen Sie nun die zweite Bash über das Kommando exit ([Strg]+[D]) und exportieren Sie die neuen Variablen. Öffnen Sie jetzt eine neue Shell aus der ersten, so “erbt” sie die Variablen, die steht nun auch in der Subshell zur Verfügung stehen (Abbildung 2).

export fügen Sie neue Variablen der Umgebung von Subshells hinzu.” width=”300″ height=”140″ />
Abbildung 2: Erst über das Kommandoexport fügen Sie neue Variablen der Umgebung von Subshells hinzu.Tipp
Anstelle von zwei getrennten Aufrufen, z. B. LESS="-X"; export LESS können Sie das Definieren und Exportieren in einem Zug vornehmen: export LESS="-X".
Das Builtinexport hat noch mehr auf dem Kasten: Zusammen mit der Option -p beziehungsweise ohne Parameter aufgerufen, zeigt es eine Liste aller exportierten Variablen an, und mit der Option -n löschen eine Variable aus der Liste. Zwei Beispiele dazu zeigt Listing 2.
huhn@asteroid:~$ export declare -x CHARSET="latin1" declare -x LS_COLORS="no=00:fi=00:…" declare -x IRCSERVER="irc.freenode.net" … huhn@asteroid:~$ export -n IRCSERVER
Renovierungsarbeiten
Die über export gesetzten Variablen gelten nur für die aktuelle Shell und deren Kind-Prozesse. Um sie dauerhaft einzurichten, passen Sie die Bash-Konfigurationsdatei an und richten Ihre Arbeitsumgebung neu ein. Dazu schreiben Sie sämtliche export-Befehle in eine der Bash-Startdateien, wie ~/.bashrc, und lesen diese im Anschluss an die Renovierungsarbeiten über das Kommando
source ~/.bashrc
neu ein. Listing 3 zeigt ein paar praktische Umgebungsvariablen samt ausführlicher Kommentare, mit denen Sie gut eingerichtet sind.
# Verhindert, dass "less" nach Programmende
# einen leeren Bildschirm zuruecklaesst:
export LESS="-X"
# Bringt Farbe ins Spiel: Benutzerprompt in
# Gruen, Root-Prompt in Rot:
if [ $(id -u) = 0 ] ; then
COLOR1='\[\033[00;31m\]'
else
COLOR1='\[\033[01;32m\]'
fi
COLOR2='\[\033[00;33m\]'
COLOR3='\[\033[00;37m\]'
PS1=$COLOR1'[\u@\h'$COLOR2' \W'$COLOR1']'$COLOR3'\$ '
PS2=$COLOR1'>'$COLOR3' '
# auf meinem Server in Kanada will ich
# trotzdem in der deutschen Zeitzone sein:
export TZ=CET
# ispell soll direkt den richtigen Zeichensatz
# und das richtige Woerterbuch verwenden:
export DICTIONARY=ngerman
export CHARSET=latin1
Glossar
-
Builtin
-
Kurz für “builtin command”. Eingebauter Befehl der Shell, zu dessen Ausführung sie kein gesondertes Programm aufrufen muss.
[1] Prozessverwaltung auf der Shell: Heike Jurzik, “Volle Kontrolle”, LinuxUser 03/2006, S. 92, http://www.linux-user.de/ausgabe/2006/03/092-zubefehl/






