Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

sh - Kommandointerpreter und Programmiersprache der POSIX- Shell

&pagelevel(4)&pagelevel

(shell, the standard command language interpreter)


Kommandos werden in der Login-Shell nacheinander aus der Datei /etc/profile und dann, falls eine der Dateien existiert, entweder aus .profile des aktuellen Verzeichnisses oder aus $HOME/.profile gelesen. Danach werden noch die Kommandos aus der Datei gelesen, deren Name durch den Wert der Shell-Variable ENV nach Parametersubstitution gegeben wird.


Syntax


sh[ option...][ datei][ argument]...

Keine Option angegeben

Eine Subshell mit der Option -s wird aufgerufen. Der zuvor aktuelle Shell-Prozess wird zum Vater der neuen Shell. Die Subshell können Sie terminalabhängig entweder mit CTRL+D oder @@d oder mit dem Kommando exit beenden.

option

sh interpretiert beim Aufruf die nachfolgenden Optionen und zusätzlich die Optionen, die beim eingebauten Kommando set der POSIX-Shell beschrieben sind:

-c kommando_zeichenkette

Die Kommandos werden aus kommando_zeichenkette gelesen.

-s

Ist Option -s angegeben oder fehlen datei und argument, dann liest die POSIX-Shell die Kommandos von der Standard-Eingabe und schreibt die Ausgaben auf die Standard-Ausgabe. Nur Diagnosemeldungen werden auf die Standard-Fehlerausgabe geschrieben.

-i

Ist Option -i angegeben oder sind Standard-Eingabe und -Ausgabe mit einer Datensichtstation verbunden, dann wird eine interaktive POSIX-Shell aufgerufen. In diesem Fall wird zum einen TERM ignoriert, so dass kill 0 keine interaktive Shell beendet, und zum anderen INTR abgefangen und ignoriert, damit wait unterbrechbar ist. Auf jeden Fall wird QUIT von der POSIX-Shell ignoriert.

-r

Mit Option -r wird eine eingeschränkte POSIX-Subshell gestartet. In dieser Shell gelten folgende Einschränkungen:

  • Das eingebaute sh-Kommando cd wird abgewiesen, d.h. Sie können Ihr aktuelles Dateiverzeichnis nicht verlassen.

  • Sie können den Wert der Variablen PATH nicht ändern.

  • Kommandos werden abgewiesen, wenn der Name der zugehörigen Kommandodatei einen Schrägstrich / enthält. Sie können nur solche Kommandos ausführen, die in Ihrem aktuellen Dateiverzeichnis stehen oder in den Dateiverzeichnissen, deren Pfade der Shell-Variablen PATH zugewiesen sind.

  • Kommandos werden abgewiesen, wenn der Aufruf die Zeichen > oder >> enthält. Die Ausgabe der Kommandos kann also nicht mit > oder >> in eine Datei umgelenkt werden.

Die eingeschränkte Subshell können Sie terminalabhängig entweder mit CTRL+D oder @@d oder mit dem Kommando exit beenden.

datei

Wurde die Option -s nicht angegeben, dafür aber datei, dann wird entsprechend dem Suchpfad nach der Shell-Prozedur datei gesucht. Für die Prozedur muss das Leserecht gesetzt sein. Falls das s-Bit für Eigentümer oder Gruppe gesetzt ist, so wird dieses ignoriert. Kommandos werden wie im Folgenden beschrieben gelesen.

argument

Als Argumente können Sie Kommandos angeben. Der Kommandoname wird als nulltes Argument übergeben. Die Kommandos sind unten beschrieben.

Wird die POSIX-Shell vom Systemaufruf exec aufgerufen und ist das erste Zeichen des nullten Arguments ein Bindestrich, dann wird die Shell als login-Shell behandelt.

Endestatus

Normalerweise gibt die POSIX-Shell den Endestatus des letzten ausgeführten Kommandos zurück (siehe exit).

Von der POSIX-Shell erkannte Fehler, wie z.B. Syntaxfehler, führen zu einem Endestatus ungleich 0. Wird die POSIX-Shell nicht-interaktiv benutzt, dann wird die Bearbeitung der Prozedur-Datei abgebrochen. Von der POSIX-Shell erkannte Laufzeit-Fehler werden durch Ausgabe des Kommandonamens und der Fehlerbedingung berichtet. Ist die Zeilennummer der Zeile mit dem fehlerhaften Kommando größer eins, dann wird nach dem Kommando- oder Funktionsnamen noch die Zeilennummer in eckigen Klammern [...] angegeben.

Datei

/etc/profile
/etc/suid_profile
$HOME/.profile
/tmp/sh*
/dev/null

Variable

Folgende Variablen wirken sich auf sh aus:

FCEDIT, HISTFILE, HISTSIZE, HOME, IFS, MAIL, MAIL, MAILCHECK, MAILPATH und PATH

(Beschreibung siehe Abschnitt "POSIX-Shell-Variablen und Parameter-Ersetzung").

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos sh:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_COLLATE

Legt die internationale Umgebung für die Bedeutung von Zeichenbereichen, Äquivalenzklassen und Zeicheneinheiten in Mustervergleichen fest.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien). Die Variable bestimmt außerdem, welche Zeichen als Buchstaben definiert sind sowie das Verhalten von Zeichenklassen im Mustervergleich.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Siehe auch

cat, cd, chmod, cut, echo, env, paste, stty, test, umask, vi

dup(), exec(), fork(), getrlimit(), ioctl(), lseek(), pipe(), signal(), umask(), ulimit(), wait(), rand() [4]