Kommandolokalisierung

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Wie wird ein Kommando lokalisiert

  • Die Shell versucht ein Kommando auszuführen.
  • Dazu muss sie es aber erst lokalisieren.
  • Das erste passende Kommando wird ausgeführt.
  • Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt.
  • Ein Kommandoname kann mit Pfadnamen in einem Verzeichnis angegeben werden.
  • Die Shell erkennt dies an (mindestens) einem Slash `/' im Kommandonamen.
  • Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden.
  • Dazu wird der Kommandoname zuerst in der Hashtabelle gesucht,
  • Dann wird er mit den Synonymen
  • Weiter mit den Scriptfunktionen
  • Schließlich mit den Shellfunktionen verglichen.
  • Schliesslich wird in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht.
  • Wird auch hier kein passendes Kommando gefunden, gibt die Shell eine Fehlermeldung aus.

Reihenfolge der Lokalisierung

  • Hashtabelle
  • Aliase
  • Funktionen
  • Shell Funktionen
  • Pfad

which und type

which

which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.

which [-a] Dateiname 

Optionen:

  • -a : Alle Treffer ausgeben, nicht nur den ersten
  • --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen

Beispiel

  • which startx
/usr/bin/startx

type

Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen Shell befinden.

type [Optionen] Befehle

Beispiel

  • type ls
ls is aliased to `ls --color=auto'

Optionen:

  • -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde
root@zero:~# type -a ls
ls is aliased to `ls --color=auto'
ls is /bin/ls
  • -p : Anzeigen des Eintrags von Befehl in der Hash-Tabelle. Dieser Wert kann sich vom ersten Auftreten des Befehls in PATH

unterscheiden

root@zero:~# type -p apache2
/usr/sbin/apache2
  • -t : Anzeigen, ob Befehl ein Aliasname, ein Schlüsselwort, eine Funktion, ein eingebauter Befehl oder eine Datei ist
root@zero:~# type -t apache2
file