Wichtige Shell-Variable
CIP Index Up Left Right

Liste wichtiger Shell-Variable

Per Konvention werden Shell-Variablen klein geschrieben, um sie von den Environment-Variablen zu unterscheiden. Einige Variable existieren als Shell- und Environmentvariable, da sie sowohl von der Shell als auch von den Anwendungsprogrammen benötigt werden (z.B. path und term). Wird eine der Variablen gesetzt, gleicht die Shell die andere automatisch an.

Zum Setzen der Variablen existiert der Shell-Befehl set. Die Angabe eines Wertes ist optional. Man kann damit einer Variablen auch eine Liste zuweisen (z.B. ist path eine Liste). Dann müssen die Elemente geklammert werden.

set varname
set varname=value
set list=( item1 item2 item3 )
unset varname
Aufruf von set ohne Parameter listet alle Variablen. Eine Definition kann wieder rückgängig gemacht werden mit dem Kommando unset varname.
path
Gibt an, in welchen Verzeichnissen die Shell nach ausführbaren Programmen suchen soll, so daß man zum Start eines Programms nicht immer den vollen Pfad angeben muß. Die Reihenfolge im Pfad ist relevant, da oft verschiedene Versionen von Programmen in verschiedenen Verzeichnissen zu finden sind.

Wenn man wissen möchte, welcher Pfad zu einem Programm führt benützt man das Kommando which progname, daß den Pfad entlang geht und nach progname sucht. Mit where bzw. whereis (auf System-V Maschinen) kann man sich alle Pfade seiner PATH-Liste ausgeben lassen, die zu dem Programm führen.

Die für den CIP-Pool günstigste Einstellung entnimmt man am besten der Datei .cshrc der CIP-Standardumgebung. Von ihr werden die meistgebräuchlichsten Programme umfaßt. Im Fall fehlender Pfade siehe im Kapitel Paketkonzept.

Manche Benutzer fügen noch den Punkt . in ihren Pfad ein (wenn, dann aber nur ganz am Schluß). Das hat den Vorteil, daß selbstgeschriebene Programme im aktuellen Verzeichnis gefunden werden und nicht mit "./program" gestartet werden müssen. Der Nachteil ist jedoch, daß, wenn es ein Standardprogramm mit gleichem Namen gibt, dieses anstelle ausgeführt wird. Das kann zu dummen Verwechselungen führen.

ignoreeof
Die Shell läßt sich nach Setzen dieser Variable nicht mehr durch Drücken von Control-D beenden, sondern nur noch per Eingabe von "exit".

notify
Die Shell informiert asynchron über Statuswechsel eines ihrer "Kinder", d.h. wenn immer ein Prozeß beendet oder suspendiert wird, der von dieser Shell aus gestartet wurde, erscheint sofort eine Meldung auf dem Terminal, und nicht mehr nur beim Schreiben eines neuen Promptes. Siehe auch: Jobkontrolle mit der csh.

prompt
Steuert das Aussehen des Promptes, d.h. der Eingabeaufforderung. Die tcsh hat dabei mehrere Formatierungshilfen wie Invert (%S und %s) oder Eventnummer (%h). Man kann auch Shell-Variable verwenden, diese werden jedoch schon bei der Definition ausgewertet. Dann hilft der Trick, das cd-Kommando umzudefinieren:
alias cd 'cd \!*;pro'
und so z.B. nach jedem cd den Prompt neu zu definieren, falls man ein $cwd im Prompt hat. Bei Remote-Shells ist diese Variable nicht automatisch vordefiniert, so daß man nicht-interaktive Shells hieran erkennen kann (und sich z.B. im .cshrc Startup Script einiges sparen kann).

filec
Die automatische Filenamen-Vervollständigung der csh per ESC-Taste wird ein- oder ausgeschaltet.

history
Legt fest, wieviele Kommandozeilen sich die Shell für den History-Mechanismus merkt.

noclobber
Ist diese Variable definiert, können mit dem > Operator (Ausgabeumlenkung) keine Dateien überschrieben werden - es erfolgt eine Fehlermeldung, falls die angegebene Datei schon existiert

term
Diese Variable sagt der Shell, was für eine Art von Terminal man benutzt (z.B. xterm unter X11-xterms). Danach richten sich die Steuerzeichen, die bei der Textausgabe für Formatierungen verwendet werden. Ist diese Variable falsch eingestellt, wird die Textausgabe u.U. völlig unlesbar. Wenn man sich nicht sicher ist, welche Einstellung man gerade benötigt, ist vt100 meist ein guter Tip.

mail
Durch Setzen dieser Variablen kann man seine mailbox durch die Shell überwachen lassen. Sie prüft dann alle "secs" Sekunden, ob etwas im mailfolder abgelegt wurde; in diesem Fall unterrichtet sie den Empfänger vor dem nächsten Prompt davon. (Man kann damit natürlich jede beliebige Datei auf Veränderung überwachen). Der Variablen muß ein String der Form set mail=mailbox secs zugewiesen werden. Dabei ist mailbox der Pfad zur eigenen Mailbox, das ist /usr/mail/Logname auf System-V Rechnern (HP und SGI) bzw. /usr/spool/mail auf Sun Rechnern.