Kommandolokalisierung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
=Wie wird ein Kommando lokalisiert= | =Wie wird ein Kommando lokalisiert= | ||
| − | + | *Die Shell versucht ein Kommando auszuführen. | |
| − | + | *Dazu muss sie es aber erst lokalisieren. | |
| − | es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt. | + | *Das erste passende Kommando wird ausgeführt. |
| − | + | *Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. | |
| − | Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in | + | *Ein Kommandoname kann mit Pfadnamen in einem Verzeichnis angegeben werden. |
| − | einem Verzeichnis | + | *Die Shell erkennt dies an (mindestens) einem Slash `/' im Kommandonamen. |
| − | im Kommandonamen. Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. Dazu wird | + | *Wenn kein Verzeichnis angegeben ist, versucht die Shell selbst, das Kommando zu finden. |
| − | der Kommandoname zuerst in der Hashtabelle gesucht, | + | *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. | |
| − | Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. Wird auch hier kein passendes Kommando gefunden, | + | *Schliesslich wird in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse nach einer ausführbaren Datei dieses Namens durchsucht. |
| − | gibt die Shell eine Fehlermeldung aus. | + | *Wird auch hier kein passendes Kommando gefunden, gibt die Shell eine Fehlermeldung aus. |
=Reihenfolge der Lokalisierung= | =Reihenfolge der Lokalisierung= | ||
| Zeile 33: | Zeile 33: | ||
Beispiel | Beispiel | ||
| − | + | *which startx | |
/usr/bin/startx | /usr/bin/startx | ||
| Zeile 43: | Zeile 43: | ||
Beispiel | Beispiel | ||
| − | + | *type ls | |
ls is aliased to `ls --color=auto' | ls is aliased to `ls --color=auto' | ||
Version vom 16. November 2022, 15:37 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 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