Alles variabel

env, export & Co.

01.05.2003
,
Wenn Sie auf der Konsole einen Befehl eingeben, weiß die Shell von selbst, wo sie nach dem Programm suchen muss. Starten Sie von einem entfernten Server ein X-Programm, weiß die Shell, auf welchem Desktop es angezeigt werden soll. Und Ihr IRC-Client weiß sogar, welchen IRC-Server Sie mit welchem Nick besuchen wollen – all das basiert auf richtig gesetzten Shell-Variablen.

Zu Befehl

Auch wenn sich viele Dinge bequem über grafische Oberflächen wie KDE oder GNOME regeln lassen – wer sein Linux-System richtig ausreizen möchte, kommt um die Kommandozeile nicht herum. Abgesehen davon gibt es auch sonst viele Situationen, in denen es gut ist, sich im Befehlszeilendschungel ein wenig auszukennen.

Die Bash: Unendliche Weiten… Ihren ganzen Funktionsumfang erhalten die Shell und viele andere Programme unter Linux mit Hilfe so genannter Shell-Variablen. Diese sind mit Variablen aus Programmiersprachen vergleichbar, können allerdings nur Zeichenketten (Strings) speichern. Einer Variable wird mit einem Zuweisungsoperator (dem =-Zeichen) ein Wert zugewiesen. Sollte dieser Sonder- oder Leerzeichen enthalten, muss die Zeichenkette in einfache oder doppelte Hochkommata gestellt werden, z. B. a="1 2 3".

Auf eine gesetzte Variable lässt sich jederzeit aus einem Shell-Skript oder auch direkt auf der Shell zugreifen, indem sie mit vorangestelltem Dollar-Zeichen verwendet wird, so gibt beispielsweise der Befehl echo $PATH den Inhalt der Shell-Variable PATH aus, in der alle Verzeichnisse (durch Doppelpunkte getrennt) abgelegt sind, in denen die Shell nach Programmen suchen soll, wenn Sie einen Befehlsnamen ohne seinen absoluten Pfad (also einfach vi statt /bin/vi) eingeben:

huhn@transpluto:~$ echo $PATH
/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome2/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:.:/usr/sbin:/sbin

Soll eine Variable nicht nur in der laufenden Shell, sondern auch in von ihr gestarteten Programmen gültig sein, muss der Variablenzuweisung noch das Schlüsselwort export vorangestellt werden: Aus a="1 2 3" wird dann export a="1 2 3".

Da es viel zu konfigurieren gibt, ist Linux bei der Verwendung von Shell-Variablen nicht sparsam – einen Überblick erhalten Sie, indem Sie den Befehl env (kurz für Environment, englisch: Umgebung) eingeben:

huhn@transpluto:~$ env
PWD=/home/huhn
PS1=\u@\h:\w\$
ENV=/home/huhn/.bashrc
LS_COLORS=no=00:fi=00:…
LANG=de_DE@euro
SHELL=/bin/bash
HOME=/home/huhn
PATH=/usr/local/bin:/usr/bin:/usr/X11R6/bin:/bin:/usr/games:/opt/gnome2/bin:/opt/gnome/bin:/opt/kde3/bin:/opt/kde2/bin:.:/usr/sbin:/sbin
LESSCHARSET=latin1
TERM=xterm
HOST=transpluto
…

Hier sehen Sie einige Umgebungsvariablen ("environment variables"), z. B. definiert PS1 das Aussehen des Shell-Prompts. In diesem Fall ist die Variable auf \u@\h:\w\$ gesetzt: \u steht für den Usernamen, es folgt ein @-Zeichen. \h gibt den Rechnernamen aus, und nach einem Doppelpunkt folgen noch \w für das aktuelle (Arbeits-) Verzeichnis und ein abschließendes Zeichen, das im Falle eines "normalen" Anwenders ein Dollarzeichen, im Falle des Administrators root ein Doppelkreuz (#) ist.

Über die Variable HOME wird Ihr Home-Verzeichnis festgelegt, in das Sie so z. B. springen können, indem Sie einfach cd eingeben. Ändern Sie den Wert der Variable HOME, so ändert sich auch das Verhalten von cd und verschiedenen Programmen, die diese Variable auswerten. Über LANG (hier: "de_DE@euro") wird die Sprache definiert, in denen Ihnen Shell- und andere Anwendungen entgegen treten: Ist Ihr Linux-System beharrlich englischsprachig, liegt das meist an einer falsch eingestellten LANG-Variablen.

Für immer?

Wenn Sie einer Variable einen Wert zuweisen, gilt das immer nur für die aktuelle Shell. In jedem neuen Terminal-Fenster läuft eine eigene Shell. Um eine Variable dauerhaft einzurichten, schreiben Sie den entsprechenden export-Befehl in eine der Autostart-Dateien wie z. B. .profile und .bashrc in Ihrem Home-Verzeichnis.

Bevor Sie neue Variablen definieren, sollten Sie prüfen, ob diese nicht bereits vorhanden sind, da sonst andere Kommandos vielleicht nicht mehr wie gewohnt funktionieren. Überschreiben Sie beispielsweise die Variable DISPLAY, können Sie aus der aktuellen Shell keine X-Window-Programme mehr aufrufen, da diese auf eine korrekt gesetzte DISPLAY-Variable angewiesen sind. Normal enthält diese Variable übrigens einen Wert der Form "rechnername:0".

In einigen Fällen können Shell-Variablen auch genutzt werden, um spezielle Komfort-Funktionen eines Programmes zu verwenden. So kann man etwa den IRC-Client BitchX dazu bewegen, sich automatisch mit dem richtigen Nickname an einem bestimmten IRC-Server anzumelden, indem drei Variablen gesetzt werden:

IRCNICK="mynickname"
IRCNAME="identname"
IRCSERVER="irc.freenode.net"
export IRCNICK IRCNAME IRCSERVER

Während über IRCNICK und IRCSERVER die beiden bereits genannten Einstellungen vorgenommen werden, legt IRCNAME den Bestandteil fest, der im IRC als "Ident" bekannt ist; dieser ist in vielen Fällen der Username auf dem PC.

Gewolltes Vergessen

Übrigens können Sie den Befehl env mit der Option -u dazu verwenden, für die Ausführung eines Befehls bestimmte Variablen zu "vergessen": Wollen Sie beispielsweise unter SuSE Linux YaST2 im Textmodus starten, könnten Sie dafür den Aufruf

env -u DISPLAY yast2

verwenden. Dadurch wird die Variable DISPLAY aus dem Environment gelöscht, bevor yast2 aufgerufen wird. Dieses Entfernen der Variable ließe sich zwar auch mit dem Befehl unset erreichen – damit wäre die Variable allerdings dauerhaft (in dieser Shell) gelöscht. Obiger env-Aufruf wirkt sich nur auf den aktuellen Aufruf aus.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Bequem eingerichtet
    Mit Umgebungsvariablen richten Sie sich die Kommandozeile individuell und gemütlich ein.
  • Zu Befehl: bash, bc
    Es muss nicht immer ein grafischer Taschenrechner wie xcalc oder KCalc sein – auch die Bash beherrscht einfache arithmetische Operationen, und für die fortgeschrittenen Mathematiker gibt's bc.
  • Bash-Kurs Teil 6
    Die elementaren Konfigurationsmöglichkeiten mit eingebauten Funktionen der Bash sind der Schwerpunkt dieses Teils. Im nächsten wird ein komfortables Tool zur Erzeugung von Konfigurationsdateien vorgestellt.
  • Tricks für die Bash
    Mit ein paar grundlegenden Kniffen bringen Sie Schwung und Farbe in die Arbeit auf der Kommandozeile.
  • Know-how für die Kommandozeile
    Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sie manche Aufgabe schneller als in grafischen Programmen bewältigen. Wir stellen die wichtigsten Anwendungen vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.
Kommentare

Infos zur Publikation

title_2014_10

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...