command(1) command(1)
NAME
command - Einen einfachen Befehl ausführen
SYNTAX
command [-p] kommandoname [argument ...]
command [-v | -V] kommandoname
BESCHREIBUNG
Bei der Angabe des Kommandos command behandelt die Shell die Argumente
als einfache Kommandos, wobei die Funktionssuche der Shell unterdrückt
wird.
Wenn der Kommandoname kommandoname derselbe Name wie der eines spe-
ziellen eingebauten Kommandos ist, treten die besonderen Merkmale der
speziellen eingebauten Kommandos nicht in Erscheinung. Wenn es sich
bei kommandoname nicht um einen Funktionsnamen handelt, hat command in
jeder anderen Hinsicht dieselbe Auswirkung als wäre command gar nicht
angegeben.
Das Kommando command stellt darüber hinaus auch Informationen für die
Interpretation eines Kommandonamens durch die Shell zur Verfügung.
Siehe -v und -V.
OPTIONEN
-p Führt die Kommandosuche mit Hilfe eines Standardwerts für PATH
durch. Über diesen Standardpfadnamen sind alle Standardkommandos
zugänglich.
-v Gibt den Pfadnamen oder das Kommando, mit dem die Shell
kommandoname in ihrer aktuellen Ausführungsumgebung aufruft, auf
die Standardausgabe aus.
- Kommandos, reguläre eingebaute Kommandos, Kommandonamen
(kommandoname), die einen Schrägstrich enthalten, und alle zur
Verfügung gestellten Funktionen, die über die Variable PATH
gefunden werden können, werden als absolute Pfadnamen ausgege-
ben.
- Shell-Funktionen, spezielle eingebaute Kommandos und reguläre
eingebaute Kommandos, die nicht über PATH gefunden werden kön-
nen, sowie reservierte Wörter innerhalb der Shell werden
lediglich als einfache Namen ausgegeben.
- Bei einem Alias wird die Alias-Definition ausgegeben.
- In allen anderen Fällen wird nichts ausgegeben. Der Endestatus
gibt dann an, daß der Name nicht gefunden wurde.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
command(1) command(1)
-V Gibt aus, wie kommandoname von der Shell in ihrer aktuellen Aus-
führungsumgebung interpretiert wird. Die Ausgabe gibt an, in wel-
che der folgenden Kategorien kommandoname gehört, und enthält die
folgenden Informationen:
- Kommandos, reguläre eingebaute Kommandos und alle zur Verfü-
gung gestellten Funktionen, die über die Variable PATH gefun-
den werden können, werden als solche identifiziert und mit den
absoluten Pfadnamen ausgegeben.
- Andere Shell-Funktionen werden als Funktionen identifiziert.
- Aliasse werden als solche identifiziert, und als Alias-Defini-
tionen ausgegeben.
- Spezielle eingebaute Kommandos werden als solche identifiziert.
- Reguläre eingebaute Kommandos, die nicht über PATH gefunden
werden können, werden als reguläre eingebaute Kommandos iden-
tifiziert.
- Reservierte Wörter in der Shell werden als reservierte Wörter
identifiziert.
argument
Zeichenkette, die als Argument an kommandoname übergeben wird.
kommandoname
Der Name eines Kommandos oder eines speziellen eingebauten Kom-
mandos.
UMGEBUNGSVARIABLEN
LANG Gibt einen Standardwert für die Internationalisierungs-
variablen an, die nicht gesetzt oder null sind. Ist LANG
nicht gesetzt oder null, wird der entsprechende Standard-
wert der internationalen Umgebung verwendet. Enthält eine
der Internationalisierungsvariablen eine ungültige Ein-
stellung, verhält sich das Kommando so, als wäre keine
der Variablen definiert.
LCALL Ist diese Variable auf einen Wert gesetzt, d. h. ist sie
nicht leer, überschreibt dieser Wert die Werte aller
übrigen Internationalisierungsvariablen.
LCCTYPE Legt die internationale Umgebung für die Interpretation
von Byte-Folgen als Zeichen fest (z. B. Einzelbytezeichen
im Unterschied zu Mehrbytezeichen in Argumenten).
LCMESSAGES Legt das Format und den Inhalt von Fehlermeldungen fest.
Die hier angegebene internationale Umgebung gilt auch für
informative Meldungen, die auf die Standardausgabe
geschrieben werden.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
command(1) command(1)
NLSPATH Legt die Position der Meldungskataloge für die Verarbei-
tung von LCMESSAGES fest.
PATH Legt den bei der Kommandosuche verwendeten Suchpfad fest,
außer wenn mit -p ein Standardwert gesetzt wurde.
ENDESTATUS
Wenn eine der Optionen -v oder -V angegeben ist, werden die folgenden
Endewerte zurückgegeben:
0 Erfolgreiche Beendigung.
>0 kommandoname konnte nicht gefunden werden, oder ein Fehler ist
aufgetreten.
Andernfalls werden die folgenden Endewerte zurückgegeben:
126 Das von kommandoname angegebene Kommando konnte zwar gefunden,
jedoch nicht aufgerufen werden.
127 Beim Kommando command ist ein Fehler aufgetreten, oder das von
kommandoname angegebene Kommando konnte nicht gefunden werden.
Andernfalls wird der Endestatus von kommandoname zurückgegeben.
ANWENDUNGSHINWEISE
Die Reihenfolge der Kommandosuche ermöglicht es Funktionen, reguläre
eingebaute Kommandos und Suchpfade zu überschreiben. command ermög-
licht Funktionen, die denselben Namen haben wie ein Kommando, das Kom-
mando aufzurufen (und nicht rekursiv die Funktion).
Der Standardpfad des Systems kann mit getconf(1) abgefragt werden. Da
getconf jedoch möglicherweise selbst über PATH aufgerufen wird, kann
der folgende Aufruf nützlich sein:
command -p getconf CSPATH
Gelegentlich ist es von Vorteil, das besondere Verhalten von speziel-
len eingebauten Kommandos zu unterdrücken. Im folgenden Beispiel wird
der Abbruch eines nichtinteraktiven Scripts verhindert, so daß der
Ausgabestatus von dem Script geprüft werden kann.
command exec > unwritable-file
Da die Optionen -v und -V des Kommandos command Ausgaben erstellen,
die von der aktuellen Shell-Ausführungsumgebung abhängen, wird command
als reguläres eingebautes Kommando der Shell zur Verfügung gestellt.
Wenn es in einer Subshell oder einer separaten Ausführungsumgebung
aufgerufen wird, wie im folgenden Beispiel, können inkorrekte Ergeb-
nisse auftreten:
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
command(1) command(1)
(PATH=foo command -v)
nohup command -v
Wenn es beispielsweise mit nohup oder exec in einer separaten Ausfüh-
rungsumgebung aufgerufen wird, können eventuell Aliasse, Funktionen
oder spezielle eingebaute Kommandos nicht identifiziert werden.
BEISPIELE
1. Folgendermaßen kann eine Version von cd erstellt werden, die nach
dem Wechsel das neue Arbeitsverzeichnis ausgibt:
cd1() {
command cd "$@" >/dev/null
pwd
}
Achtung: Da cd ein eingebautes Shell-Kommando ist, darf es gemäß
X/Open-Spezifikation nicht redefiniert werden. Daher muß der Name
"cd" nach "cd1" geändert werden [vgl. sh(1), Kapitel Eine Shell-
Funktion definieren].
2. Folgendermaßen können Sie ein "sicheres Shell-Script" starten, das
von seinem Vaterprozeß nicht irregeführt werden kann:
IFS='
'
# The preceding value should be <space><tab><newline>.
# Set IFS to its default value.
\unalias -a
# Unset all possible aliases.
# Note that unalias is escaped to prevent an alias
# being used for unalias.
unset -f command
# Ensure command is not a user function.
PATH="$(command -p getconf CSPATH):$PATH"
# Put on a reliable PATH prefix.
# ...
Sofern die korrekten Berechtigungen für die von PATH aufgerufenen
Verzeichnisse bestehen, kann das Script nun sicherstellen, daß aus-
schließlich die gewünschten Kommandos aufgerufen werden.
HINWEISE
command existiert sowohl als externes Kommando (/usr/bin/command) als
auch als eingebautes Shell-Kommando (Built-in) der Korn-Shell ksh(1).
Für die Ausführung von /usr/bin/command erzeugt die Shell einen neuen
Prozeß.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
command(1) command(1)
Bei der Verwendung von command können sich Abweichungen im Verhalten
ergeben, je nachdem, welches Kommando benutzt wird. Die möglichen
Abweichungen sind nicht eigens beschrieben.
SIEHE AUCH
getconf(1), ksh(1), type(1).
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98