Befehl "command"

Zweck

Führt einen einfachen Befehl aus.

Syntax

command [-p] command_name [argument...]
command [-p] [-v|-V ] command_name

Beschreibung

Der Befehl command bewirkt, dass die Shell den angegebenen Befehl und die angegebenen Argumente als einfachen Befehl behandelt und die Suche von Shellfunktionen unterdrückt.

Normalerweise sucht die Shell einen Befehl in den folgenden Kategorien, wenn einem Befehl kein Schrägstrich (/) vorangestellt ist (der bestimmten Pfad angibt):

  1. Integrierte Sonderbefehle der Shell
  2. Shellfunktionen
  3. Integrierte reguläre Befehle der Shell
  4. Umgebungsvariable PATH

Wenn es beispielsweise eine Funktion gibt, die denselben Namen hat wie ein integrierter regulärer Befehl, verwendet das System die Funktion. Mit dem Befehl command können Sie einen Befehl aufrufen, der denselben Namen hat wie eine Funktion, und den einfachen Befehl abrufen.

Die Befehle -v und -V geben in der Standardausgabe aus, welcher Pfadname von der Shell verwendet wird und wie die Shell den Befehlstyp interpretiert (integrierter Befehl, Funktion, Alias usw.). Da die Flags -v und -V eine Ausgabe in Bezug auf die aktuelle Shellumgebung erzeugen, wird der Befehl command als als regulärer integrierter Befehl der Korn-Shell oder POSIX-Shell bereitgestellt. Der Befehl /usr/bin/command erzeugt möglicherweise nicht die richtigen Ergebnisse, weil er in einer Subshell oder einer separaten Befehlsausführungsumgebung aufgerufen wird. Im folgenden Beispiel kann die Shell keine Aliasse, Subroutinen und Sonderbefehle der Shell identifizieren:

(PATH=foo command -v)
nohup command -v

Flags

Element Beschreibung
-p Führt die Befehlssuche unter Verwendung eines Standardwerts für die Umgebungsvariable PATH durch, die alle Standardbefehle findet.
-v Schreibt den Pfadnamen, der von der aktuellen Shell für den Aufruf des angegebenen Befehls verwendet wird, gemäß den folgenden Konventionen in die Standardausgabe:
  • Befehle, integrierte reguläre Befehle, Befehle mit einem / (Schrägstrich) und von der Implementierung bereitgestellten Funktionen, die von der Umgebungsvariablen PATH gefunden werden, werden als absolute Pfadnamen in die Standardausgabe geschrieben.
  • Shellfunktionen, integrierte Sonderbefehle, integrierte reguläre Befehle, die keiner Suche mit der Umgebungsvariablen PATH zugeordnet sind, und reservierte Wörter der Shell werden nur mit Namen ausgegeben.
  • Aliasse werden als solche identifiziert und ihre Definitionen werden in die Zeichenfolge eingeschlossen.

Wenn der angegebene Befehlsname nicht gefunden wird, wird keine Ausgabe geschrieben und als Exitstatus wird ein Wert >0 zurückgegeben.

-V Schreibt den Befehlsnamen, der von der aktuellen Shellumgebung interpretiert wird, in die Standardausgabe. Obwohl das Format dieser Ausgabe nicht angegeben wird, zeigt die Ausgabe an, zu welcher der folgenden Kategorien der Befehl gehört:
  • Befehle, reguläre Shellbefehle und alle von der Implementierung bereitgestellten Subroutinen, die von der Umgebungsvariablen PATH gefunden werden, werden als solche identifiziert und als absolute Pfadnamen geschrieben.
  • Andere Shellfunktionen werden als Funktionen identifiziert.
  • Aliasse werden als solche identifiziert und ihre Definitionen werden in die Zeichenfolge eingeschlossen.
  • Integrierte Sonderbefehle werden als solche identifiziert.
  • Integrierte reguläre Befehle, die der Suche mit der Umgebungsvariablen PATH nicht zugeordnet sind, werden als solche identifiziert.
  • Reservierte Wörter der Shell werden als solche identifiziert.

Exitstatus

Wenn Sie das Flag -v oder das Flag -V angeben, werden die folgenden Exitwerte zurückgegeben:

Element Beschreibung
0 Erfolgreiche Ausführung.
>0 Der mit dem Parameter Befehlsname angegebene Befehl wurde nicht gefunden oder es ist ein Fehler aufgetreten.

Wenn Sie das Flag -v oder das Flag -V nicht angeben, werden die folgenden Exitwerte zurückgegeben:

Element Beschreibung
126 Der mit dem Parameter Befehlsname angegebene Befehl wurde zwar gefunden, konnte aber nicht aufgerufen werden.
127 Es ist ein Fehler im Befehl command aufgetreten oder der mit dem Parameter Befehlsname angegebene Befehl wurde nicht gefunden.

Andernfalls gibt der Befehl command den Exitstatus zurück, der dem mit dem Parameter Befehlsname angegebenen Befehl zugeordnet ist.

Beispiele

  1. Geben Sie Folgendes ein, um eine Version des Befehls cd zu erstellen, die das neue Arbeitsverzeichnis ausgibt, wenn Sie das Verzeichnis wechseln:
    cd () {
            command cd "$@" >/dev/null
            pwd
    }
  2. Geben Sie Folgendes ein, um ein sicheres Shell-Script zu starten, n dem verhindert wird, dass das Script durch seine übergeordnete Shell beeinflusst wird:
    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 _CS_PATH):$PATH"
    #       Put on a reliable PATH prefix.
     
    # ...
    An diesem Punkt hat das Script die Möglichkeit sicherzustellen, dass jeder aufgerufene Befehl auch der beabsichtigte ist, sofern die korrekten Berechtigungen für die von der Umgebungsvariablen PATH aufgerufenen Verzeichnisse angegeben wurden.

Dateien

Element Beschreibung
/usr/bin/ksh Enthält den integrierten Korn-Shell-Befehl command.
/usr/bin/command Enthält den Befehl command .