env, export & Co.

Alles variabel

,
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
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ä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.
  • Shell-Tipps
    Erfahrene Linux-Nutzer schwören auf flexible Kommandozeilentools, mit denen sie manche Aufgabe schneller bewältigen als in grafischen Programmen. Wir stellen interessante Anwendungen und Aufrufparameter vor, um auch Einsteiger zu einem Ausflug in die Shell zu ermutigen.
Kommentare

Infos zur Publikation

LU 12/2016: Neue Desktops

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Aktuelle Fragen

Drucker Epson XP-332 unter ubuntu 14.04 einrichten
Andrea Wagenblast, 30.11.2016 22:07, 2 Antworten
Hallo, habe vergeblich versucht mein Multifunktionsgerät Epson XP-332 als neuen Drucker unter...
Apricity Gnome unter Win 10 via VirtualBox
André Driesel, 30.11.2016 06:28, 2 Antworten
Halo Leute, ich versuche hier schon seit mehreren Tagen Apricity OS Gnome via VirtualBox zum l...
EYE of Gnome
FRank Schubert, 15.11.2016 20:06, 2 Antworten
Hallo, EOG öffnet Fotos nur in der Größenordnung 4000 × 3000 Pixel. Größere Fotos werden nic...
Kamera mit Notebook koppeln
Karl Spiegel, 12.11.2016 15:02, 2 Antworten
Hi, Fotografen ich werde eine SONY alpha 77ii bekommen, und möchte die LifeView-Möglichkeit nu...
Linux auf externe SSD installieren
Roland Seidl, 28.10.2016 20:44, 1 Antworten
Bin mit einem Mac unterwegs. Mac Mini 2012 i7. Würde gerne Linux parallel betreiben. Aber auf e...