2.8 Shell-Variablen
Im Beispiel zuvor war die Rede von benutzerdefinierten und von der Shell vordefinierten Umgebungsvariablen. Die von der Shell vorgegebenen Umgebungsvariablen werden auch als Shell-Variablen bezeichnet. Shell-Variablen werden von der Shell automatisch angelegt und auch verwaltet. Zwar kann man jetzt nicht einfach behaupten, Shell-Variablen seien dasselbe wie Umgebungsvariablen, aber da die Shell-Variablen in der Regel immer in die Umgebung exportiert werden, wollen wir hier keine Haarspalterei betreiben.
Abhängig von der Shell stehen Ihnen hierzu eine Menge vordefinierter (aber veränderbarer) Variablen zur Verfügung. In Tabelle 2.6 bis Tabelle 2.9 finden Sie einen Überblick zu den gängigsten Umgebungsvariablen einer Shell und deren Bedeutungen.
Vordefinierte Shell-Variablen (für Bourne-Shell, Bash und Korn-Shell)
Tabelle 2.6
Vordefinierte Variablen für alle Shells
Shell-Variable
|
Bedeutung
|
CDPATH
|
Suchpfad für das cd-Kommando
|
HOME
|
Heimverzeichnis für den Benutzer; Standardwert für cd
|
IFS
|
Wort-Trennzeichen (IFS = Internal Field Separator); Standardwerte sind Leerzeichen, Tabulator- und Newline-Zeichen.
|
LOGNAME
|
Login-Name des Benutzers
|
MAIL
|
Pfadname der Mailbox-Datei, in der eingehende Mails abgelegt werden
|
MAILCHECK
|
Zeitangabe in Sekunden, wie lange die Shell wartet, bevor eine Überprüfung der Mailbox stattfindet, ob eine neue Mail eingegangen ist.
|
MAILPATH
|
Ist diese Variable gesetzt, wird MAIL unwirksam, somit eine Alternative für MAIL. Allerdings können hier mehrere Pfadangaben getrennt mit einem : angegeben werden. Die zur Pfadangabe gehörende Meldung kann mit % getrennt und nach diesem angegeben werden.
|
MANPATH
|
Pfadnamen, in denen die man-Pages (Manual-Pages) gesucht werden
|
PATH
|
Suchpfad für die Kommandos (Programme); meistens handelt es sich um eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen nach einem Kommando gesucht wird, das ohne Pfadangabe aufgerufen wurde; Standardwerte: PATH=:/bin:/usr/bin
|
PS1
|
Primärer Prompt; Prompt zur Eingabe von Befehlen (im Buch lautet dies bspw. you@host > für den normalen und # für den Superuser).
|
PS2
|
Sekundärer Prompt, Prompt für mehrzeilige Befehle; im Buch und auch als Standardwert wird > verwendet.
|
SHACCT
|
Datei für Abrechnungsinformationen
|
SHELL
|
Pfadname der Shell
|
TERM
|
Terminal-Einstellung des Benutzers (bspw. xterm oder vt100)
|
TZ
|
Legt die Zeitzone fest (hierzulande MET = Middle European Time)
|
Vordefinierte Shell-Variablen (für Korn-Shell und Bash)
Tabelle 2.7
Vordefinierte Variablen für Bash und Korn-Shell
Shell-Variable
|
Bedeutung
|
COLUMNS
|
Weite des Editorfensters, das für den Kommandozeilen-Editor und die Menüs zur Verfügung steht; Standardwert 80
|
EDITOR
|
Setzt den (Builtin-)Kommandozeilen-Editor, wenn VISUAL oder set –o nicht gesetzt sind
|
ENV
|
Enthält den Pfadnamen zur Environment-Datei, die bei jedem (Neu-)Start einer (Sub-)Shell gelesen wird. Ist die reale User- und Gruppen-ID (UID/GID) ungleich der effektiven User- und Gruppen-ID (EUID/EGUID) und es wurde das su-Kommando ausgeführt, wird diese Datei nicht aufgerufen.
|
FCEDIT
|
Pfad zum Builtin-Editor für das fc-Kommando
|
FPATH
|
Verzeichnisse, in denen der Autoload-Mechanismus nach Funktionsdefinitionen durchsucht; nicht definierte Funktionen können mittels typeset –fu gesetzt werden; FPATH wird auch durchsucht, wenn diese Funktionen zum ersten Mal aufgerufen werden.
|
HISTFILE
|
Pfadname zur Befehls-Historydatei; Standardwert: $HOME/.sh_history
|
HISTSIZE
|
Hier wird festgelegt, wie viele Befehle in der Historydatei (HISTFILE) gespeichert werden.
|
LC_ALL
|
Hier findet man die aktuelle Ländereinstellung; ist diese Variable gesetzt, sind LANG und die anderen LC_*-Variablen unwirksam. de steht bspw. für den deutschen Zeichensatz, C für ASCII (was auch der Standardwert ist).
|
LC_COLLATE
|
Ländereinstellung, nach der die Zeichen bei einem Vergleich sortiert (Sortierreihenfolge) werden
|
LC_CTYPE
|
Die Ländereinstellung, welche für die Zeichenklassenfunktionen verwendet werden soll. Ist LC_ALL gesetzt, wird LC_TYPE unwirksam; LC_TYPE hingegen überdeckt wiederum LANG, falls dieses gesetzt ist.
|
LC_MESSAGES
|
Sprache, in der die (Fehler-)Meldungen ausgegeben werden sollen
|
LANG
|
Ist keine LC_*-Variable gesetzt, wird LANG als Standardwert für alle eben beschriebenen verwendet. Gesetzte LC_*-Variablen haben allerdings Vorrang vor der Variable LANG.
|
LINES
|
Gegenstück zu COLUMN; legt die Höhe (Zeilenzahl) des Fensters fest; Standardwert 24.
|
NLSPATH
|
Pfad für die (Fehler-)Meldungen von LC_MESSAGE
|
PS3
|
Prompt für Menüs (mit select); Standardwert #
|
PS4
|
Debugging-Promptstring für die Option –x; Standardwert +
|
TMOUT
|
Wird TMOUT Sekunden kein Kommando mehr eingegeben, beendet sich die Shell; Standardwert 0 steht für unendlich.
|
Vordefinierte Shell-Variablen (für die Korn-Shell only)
Tabelle 2.8
Vordefinierte Variablen nur für die Korn-Shell
Shell-Variable
|
Bedeutung
|
VISUAL
|
Setzt den Kommandozeilen-Editor; setzt EDITOR außer Kraft, wenn gesetzt
|
Vordefinierte Shell-Variablen (für die Bash only)
Tabelle 2.9
Vordefinierte Variablen, nur in der Bash vorhanden
Shell-Variable
|
Bedeutung
|
BASH_ENV
|
Enthält eine Initialisierungsdatei, die beim Start von einer neuen (Sub-)Shell anstatt .bashrc für Scripts aufgerufen wird
|
BASH_VERSINFO
|
Versionsnummer der Bash
|
DIRSTACK
|
Array, um auf den Inhalt des Directory-Stacks, der mit den Kommandos pushd, popd und dirs verwaltet wird, zuzugreifen. set zeigt diesen Wert häufig als leer an, er ist aber trotzdem besetzt.
|
FIGNORE
|
Alle hier angegebenen Dateiendungen werden bei der automatischen Erweiterung (Dateinamensergänzung mit (˙_)) von Dateinamen ignoriert; mehrere Endungen werden durch : getrennt.
|
GLOBIGNORE
|
Enthält eine Liste von Mustern, die Namen definiert, welche bei der Dateinamen-Expansion mittels * ? [ ] nicht automatisch expandiert werden sollen
|
GROUPS
|
Array mit einer Liste aller Gruppen-IDs des aktuellen Benutzers. Wird ebenfalls von set als leer angezeigt, ist aber immer belegt.
|
HISTCONTROL
|
Damit können Sie steuern, welche Zeilen im History-Puffer aufgenommen werden sollen. Zeilen, die mit einem Leerzeichen beginnen, werden mit ignorespace ignoriert. Mit ignoredups werden wiederholt angegebene Befehle nur einmal im History-Puffer gespeichert. Beide Optionen (ignorespace und ignoredups) gleichzeitig können Sie mit ignoreboth verwenden.
|
HISTFILESIZE
|
Länge der Kommando-Historydatei in Zeilen; HISTSIZE hingegen gibt die Anzahl der gespeicherten Kommandos an.
|
HISTIGNORE
|
Eine weitere Variable, ähnlich wie HISTCONTROL. Nur besteht hierbei die Möglichkeit, Zeilen von der Aufnahme in den History-Puffer auszuschließen. Es können hierbei Ausschlussmuster definiert werden. Alle Zeilen, die diesem Muster entsprechen, werden nicht im History-Puffer gespeichert. Mehrere Muster werden mit einem Doppelpunkt getrennt.
|
HOSTFILE
|
Datei, die wie /etc/hosts zur Vervollständigung des Hostnamens verwendet wird
|
HOSTNAME
|
Name des Rechners
|
IGNOREEOF
|
Anzahl der EOFs ((Strg)+(D)), die eingegeben werden müssen, um die interaktive Bash zu beenden; Standardwert 10
|
INPUTRC
|
Befindet sich hier eine Datei, dann wird diese zur Konfiguration des Kommandozeilen-Editors statt ~/.inputrc verwendet
|
MATCHTYPE
|
Die CPU-Architektur, auf der das System läuft
|
OPTERR
|
Ist der Wert dieser Variable 1, werden die Fehlermeldungen der getopts-Shell-Funktion ausgegeben. Enthält sie eine 0, werden die Fehlermeldungen unterdrückt; Standardwert 1.
|
PIPESTATUS
|
Es ist recht kompliziert, an den Exitstatus eines einzelnen Kommandos zu kommen, das in einer Pipeline ausgeführt wurde. Ohne PIPESTATUS ist es schwierig, zu ermitteln, ob alle vorhergehenden Kommandos erfolgreich ausgeführt werden konnten. PIPESTATUS ist ein Array, welches alle Exitcodes der einzelnen Befehle des zuletzt ausgeführten Pipe-Kommandos enthält.
|
SHELLOPTS
|
Liste aller aktiven Shell-Optionen. Hier können Optionen gesetzt werden, mit denen eine neue Shell aufgerufen werden soll.
|
TIMEFORMAT
|
Ausgabeformat des time-Kommandos
|
allow_null_glob_expansion
|
Hat diese Variable den Wert 1, werden Muster, die bei der Pfadnamenserweiterung (Dateinamen-Expansion) nicht erweitert werden konnten, zu einer leeren Zeichenkette (Null-String) erweitert, anstatt unverändert zu bleiben. Der Wert 0 hebt dies auf.
|
cdable_vars
|
Ist diese Variable 1, kann dem cd-Kommando das Verzeichnis, in das gewechselt werden soll, auch in einer Variablen übergeben werden. 0 hebt dies wieder auf.
|
command_oriented_history
|
Ist der Wert dieser Variable 1, wird versucht, alle Zeilen eines mehrzeiligen Kommandos in einem History-Eintrag zu speichern. 0 hebt diese Funktion wieder auf.
|
glob_dot_filenames
|
Wird für den Wert dieser Variablen 1 eingesetzt, werden auch die Dateinamen, die mit einem Punkt beginnen, in die Pfadnamenserweiterung einbezogen. Der Wert 0 setzt dies wieder außer Kraft.
|
histchars
|
Beinhaltet zwei Zeichen zur Kontrolle der Wiederholung von Kommandos aus dem Kommandozeilenspeicher. Das erste Zeichen leitet eine Kommandozeilenerweiterung aus dem History-Puffer ein. Die Voreinstellung ist das Zeichen !. Das zweite Zeichen kennzeichnet einen Kommentar, wenn es als erstes Zeichen eines Wortes auftaucht. Ein solcher Kommentar wird bei der Ausführung eines Kommandos ignoriert.
|
history_control
|
Werte, die gesetzt werden können, siehe HISTCONTROL
|
hostname_completion_file
|
Siehe HOSTFILE
|
no_exit_on_failed_exec
|
Ist der Wert dieser Variable 1, wird die Shell nicht durch ein abgebrochenes, mit exec aufgerufenes Kommando beendet. 0 bewirkt das Gegenteil.
|
noclobber
|
Befindet sich hier der Wert 1, können bestehende Dateien nicht durch die Ausgabeumlenkungen >, >& und <> überschrieben werden. Das Anhängen von Daten an eine existierende Datei ist aber auch bei gesetzten noclobber möglich. 0 stellt den alten Zustand wieder her.
|
nolinks
|
Soll bei einem Aufruf von cd nicht den symbolischen Links gefolgt werden, setzt man den Wert dieser Variable auf 1; Standardwert 0.
|
notify
|
Soll bei einem Hintergrundprozess, der sich beendet, die Nachricht sofort und nicht erst bei der nächsten Eingabeaufforderung ausgegeben werden, dann setzt man notify auf 1; Standardwert 0.
|
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.
|