Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 2 Variablen
  gp 2.1 Grundlagen
    gp 2.1.1 Zugriff auf den Wert einer Variablen
    gp 2.1.2 Variablen-Interpolation
  gp 2.2 Zahlen
    gp 2.2.1 Integer-Arithmetik (Bourne-Shell, Bash und Korn-Shell)
    gp 2.2.2 Integer-Arithmetik (Bash und Korn-Shell only)
    gp 2.2.3 bc – Rechnen mit Fließkommazahlen und mathematische Funktionen
  gp 2.3 Zeichenketten
    gp 2.3.1 Stringverarbeitung
    gp 2.3.2 Erweiterte Funktionen für Bash und Korn-Shell
  gp 2.4 Quotings und Kommando-Substitution
    gp 2.4.1 Single und Double Quotings
    gp 2.4.2 Kommando-Substitution – Back Quotes
  gp 2.5 Arrays (Bash und Korn-Shell only)
    gp 2.5.1 Werte an Arrays zuweisen
    gp 2.5.2 Eine Liste von Werten an ein Array zuweisen (Bash)
    gp 2.5.3 Eine Liste von Werten an ein Array zuweisen (Korn-Shell)
    gp 2.5.4 Zugreifen auf die einzelnen Elemente eines Arrays
  gp 2.6 Variablen exportieren
  gp 2.7 Umgebungsvariablen eines Prozesses
  gp 2.8 Shell-Variablen
  gp 2.9 Automatische Variablen der Shell
    gp 2.9.1 Der Name des Shellscripts – $0
    gp 2.9.2 Die Prozessnummer des Shellscripts – $$
    gp 2.9.3 Der Beendigungsstatus eines Shellscripts – $?
    gp 2.9.4 Die Prozessnummer des zuletzt gestarteten Hintergrundprozesses – $!
    gp 2.9.5 Weitere vordefinierte Variablen der Shell
    gp 2.9.6 Weitere automatische Variablen für Bash und Korn-Shell


Rheinwerk Computing

2.8 Shell-Variabletoptop

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.

 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-Programmierung


Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern