Kommandolokalisierung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =Wie wird ein Kommando lokalisiert= | + | = Wie wird ein Kommando lokalisiert = |
| − | |||
| − | |||
| − | |||
| − | Als Kommandoname wird immer das erste Wort eines | + | * Die Shell versucht ein Kommando auszuführen. |
| − | + | * Dazu muss sie es aber erst lokalisieren. | |
| − | im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird | + | * Das erste passende Kommando wird ausgeführt. |
| − | der Kommandoname zuerst in der Hashtabelle gesucht | + | * Als Kommandoname wird immer das erste Wort eines Befehls erkannt. |
| − | + | * Ein Kommandoname kann mit absolutem oder relativem Pfad 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. | ||
| + | * Danach wird er mit definierten Aliasen verglichen. | ||
| + | * Anschließend werden Bash-Funktionen überprüft. | ||
| + | * Dann werden eingebaute Shell-Befehle (Built-ins) abgefragt. | ||
| + | * Schließlich werden die 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]] | |
| + | * [[Bash Funktion]] | ||
| + | * [[Eingebaute Bash Funktion]] | ||
| + | * [[Linux-Dateisystem#Pfadnamen|Pfad]] | ||
| − | = | + | == which und type == |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ===which | + | === which === |
| − | + | Der Befehl '''which''' gibt den vollständigen Pfadnamen des Programms aus, das bei Eingabe eines Kommandos ausgeführt würde. | |
| − | which gibt | ||
| − | which [-a] Dateiname | + | '''which [-a] Dateiname''' |
Optionen: | Optionen: | ||
| + | * '''-a''' – Alle Treffer ausgeben, nicht nur den ersten | ||
| + | * '''--skip-dot''' – Verzeichnisse, die mit einem Punkt beginnen, auslassen | ||
| − | + | Beispiel: | |
| − | * | + | * '''which startx''' |
| − | |||
| − | |||
| − | |||
/usr/bin/startx | /usr/bin/startx | ||
| − | + | === type === | |
| − | + | Der Befehl '''type''' zeigt an, ob ein Befehl ein Alias, eine Funktion, ein Built-in oder eine externe Datei ist, und gibt – falls vorhanden – den absoluten Pfad aus. | |
| − | |||
| − | type [Optionen] | + | '''type [Optionen] Befehl''' |
| − | Beispiel | + | Beispiel: |
| − | + | * '''type ls''' | |
ls is aliased to `ls --color=auto' | ls is aliased to `ls --color=auto' | ||
Optionen: | Optionen: | ||
| + | * '''-a''' – Alle vorkommenden Befehle werden ausgegeben, nicht nur der tatsächlich aufgerufene | ||
| + | root@zero:~# '''type -a ls''' | ||
| + | ls is aliased to `ls --color=auto' | ||
| + | ls is /bin/ls | ||
| − | * | + | * '''-p''' – Zeigt den Eintrag des Befehls in der Hash-Tabelle an (kann vom ersten Treffer in PATH abweichen) |
| − | + | root@zero:~# '''type -p apache2''' | |
| − | + | /usr/sbin/apache2 | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | root@zero:~# | ||
| − | /usr/sbin/apache2 | ||
| − | * -t | + | * '''-t''' – Gibt an, ob ein Befehl ein Alias, Schlüsselwort, eine Funktion, ein Built-in oder eine Datei ist |
| − | root@zero:~# | + | root@zero:~# '''type -t apache2''' |
file | file | ||
Aktuelle Version vom 12. Oktober 2025, 19:24 Uhr
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 Befehls erkannt.
- Ein Kommandoname kann mit absolutem oder relativem Pfad 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.
- Danach wird er mit definierten Aliasen verglichen.
- Anschließend werden Bash-Funktionen überprüft.
- Dann werden eingebaute Shell-Befehle (Built-ins) abgefragt.
- Schließlich werden die 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
which und type
which
Der Befehl which gibt den vollständigen Pfadnamen des Programms aus, das bei Eingabe eines Kommandos ausgeführt würde.
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
Der Befehl type zeigt an, ob ein Befehl ein Alias, eine Funktion, ein Built-in oder eine externe Datei ist, und gibt – falls vorhanden – den absoluten Pfad aus.
type [Optionen] Befehl
Beispiel:
- type ls
ls is aliased to `ls --color=auto'
Optionen:
- -a – Alle vorkommenden Befehle werden ausgegeben, nicht nur der tatsächlich aufgerufene
root@zero:~# type -a ls ls is aliased to `ls --color=auto' ls is /bin/ls
- -p – Zeigt den Eintrag des Befehls in der Hash-Tabelle an (kann vom ersten Treffer in PATH abweichen)
root@zero:~# type -p apache2 /usr/sbin/apache2
- -t – Gibt an, ob ein Befehl ein Alias, Schlüsselwort, eine Funktion, ein Built-in oder eine Datei ist
root@zero:~# type -t apache2 file