UNIX Umgebungsvariablen
Willemers Informatik-Ecke
UNIX stellt systemweite Variablen zur Verfügung. Einige werden zu Steuerungszwecken verwendet. Jedes Programm kann auf sie zugreifen. Die Shell bietet eine einfache Möglichkeit, Variablen zu setzen und abzufragen. In Shellskripten werden sie zum Festhalten von Ergebnissen verwendet.

Man definiert eine Variable, indem man ihr einen Inhalt zuweist. Entsprechend wird sie wieder entfernt, wenn man ihr einen leeren Inhalt zuweist. Im folgenden wird der Syntax der Bourne Shell und ihrer kompatiblen Nachfolger verwendet. Die C-Shell hat einen etwas anderen Syntax.

gaston> HUGO="schau an"
gaston> 

Es darf kein Leerzeichen zwischen Variablenname, Gleichheitszeichen und Zuweisungsobjekt auftauchen. Die Variable HUGO wird angelegt und ihr Wert ist ab diesem Augenblick die Zeichenkette >>schau an<<. Um den Inhalt einer Variablen auszulesen, stellt man ein Dollarzeichen voran.

gaston> echo $HUGO
schau an
gaston> 

Variablen in Großbuchstaben

Der echo-Befehl führt zur Ausgabe der Worte >>schau an<<. Die einschließenden Anführungszeichen werden nicht in der Variablen gespeichert. Übrigens müssen Variablennamen nicht zwingend in Großbuchstaben gesetzt sein. Da die vom System vorgegebenen Variablennamen groß sind, halten sich auch die meisten Anwender an diese Vorgabe. Aus Übersichtsgründen sollte man nicht ohne zwingenden Grund eine andere Konvention einführen.

Es gibt einige vorbelegte Variablen.

Variable Bedeutung
HOME Heimatverzeichnis des Benutzers
PATH Verzeichnisse, die nach Programmen durchsucht werden
PS1 PS2 Promptzeichen
IFS Alle Zeichen, die wie ein Leerzeichen wirken sollen
PWD Die Variable hält immer den Wert, den pwd liefert

PATH

Die Variable PATH enthält die Pfade, auf denen auf dieser Maschine die ausführbaren Programme zu finden sind. Die einzelnen Pfade sind durch einen Doppelpunkt voneinander getrennt. Die Variable bedarf selten der Änderung, da normalerweise die Startdateien für Programme an immer die gleichen Stellen installiert werden. Am interessantesten ist die Frage, ob der Punkt auch als Verzeichnis aufgelistet ist. Denn nur dann werden Programme aus dem aktuellen Verzeichnis auch gestartet, ohne einen Pfad anzugeben. In sicherheitskritischen Umgebungen wird der Punkt gern weggelassen, um es trojanischen Pferden1) schwerer zu machen. In solch einem Fall muss das Programm im aktuellen Arbeitsverzeichnis mit Namen prog durch ./prog aufgerufen werden. Die Reihenfolge der Verzeichnisse in der Variablen PATH ist ebenfalls von Interesse, da in dieser Reihenfolge die Verzeichnisse durchsucht werden, ob das aufgerufene Programm dort zu finden ist. Wird eines gefunden, wird es gestartet und die Suche abgebrochen.

Pfadbestimmung von Programmen

Da man bei Programmen, die im Pfad liegen, nur den Namen des Kommandos angibt, will man manchmal wissen, wo das Programm tatsächlich liegt, bzw. welches Programm man ausführt, wenn mehrere Programme gleichen Namens in den Pfaden stehen könnten. Zu diesem Zweck gibt es die Programme which und whereis. Man gibt ihnen den Namen des Programmes mit und sie durchsuchen alle Pfade und geben das Programm mit vollständigem Pfad an.

PS1 bestimmt den Prompt

PS1 ist der Prompt, also die Zeichenkette, die im Normalfall links neben dem Cursor steht. Standardmäßig steht dort für den normalen Anwender ein Dollarzeichen ($) und für den Administrator ein Hashzeichen (#). Inzwischen ist es aber Mode geworden, dort alle möglichen Informationen abzustellen. Dadurch füllt auf manchem System der Prompt zwei Drittel der Zeile. Andererseits ist es sicher nicht verkehrt, wenn man darüber informiert wird, wer man eigentlich ist und wo man sich befindet. So bekommt man auf meiner Maschine auf den Befehl echo $PS1 die Antwort:

\u@\h:\w > 

Die Fähigkeit den Anwender (\u), den lokalen Rechner (\h) und das aktuelle Verzeichnis (\w) im Prompt anzuzeigen, ist allerdings spezifisch von der Shell abhängig. So sieht der Prompt neben dem Cursor so aus:

arnold@gaston:/my/texte/tex/buch >

PS2

Die Variable PS2 bestimmt den Sekundärprompt. Er wird erzeugt, wenn das angefangene Kommando nach dem Return noch nicht beendet ist. Dies merkt die Shell bei Anführungszeichen oder Klammern, die gesetzt wurde, aber deren Gegenstück nicht eingegeben wurden. PS2 ist normalerweise ein einfaches Größerzeichen und wird auch selten verändert.


1 Ein trojanisches Pferd ist ein Programm, das unter dem Namen eines anderen Programmes untergeschoben zu werden. Meist steckt die Absicht dahinter, Programme unter fremden Rechten ausführen zu lassen oder Passworte auszuspionieren.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru?