Home / LinuxUser / 2003 / 05 / env, export & Co.

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Aufmacher Artikel

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

1305 Hits
Wertung: 97 Punkte (6 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...