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:
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.