Kommandolokalisierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
=Wie wird ein Kommando lokalisiert=
 
=Wie wird ein Kommando lokalisiert=
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt
+
*Die Shell versucht ein Kommando auszuführen.
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie  
+
*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 (absolut oder relativ) angegeben werden. Die Shell erkennt dies an (mindestens) einem Slash `/'  
+
*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, dann wird er mit den Synonymen, mit den Scriptfunktionen und
+
*Dazu wird der Kommandoname zuerst in der Hashtabelle gesucht,
schließlich mit den Shellfunktionen verglichen.  
+
*Dann wird er mit den Synonymen
 
+
*Weiter mit den Scriptfunktionen
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle in der PATH-Umgebungsvariablen aufgeführten  
+
*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
root@zero:~# which startx
+
*which startx
 
  /usr/bin/startx
 
  /usr/bin/startx
  
Zeile 43: Zeile 43:
  
 
Beispiel
 
Beispiel
root@zero:~# type ls
+
*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