Kommandolokalisierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(8 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
=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 eines Befehls erkannt.
 +
* Ein Kommandoname kann mit absoluten/relativen dem Pfad zum Programm 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 Shell-builtins 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.
  
==Wie wird ein Kommando lokalisiert==
+
=Reihenfolge der Lokalisierung=
Wenn die Shell alle Ersetzungen in der Kommandozeile vorgenommen und alle Umleitungen vorbereitet hat, ist der Zeitpunkt
+
*[[Hashtabelle]]
gekommen, auf den der Anwender die ganze Zeit gewartet hat. Die Shell versucht das Kommando auszuführen. Dazu muss sie
+
*[[Aliase]]
es aber erst lokalisieren. Das erste passende Kommando wird ausgeführt.
+
*[[Bash funktion]]
 
+
*[[Eingebaute Bash Funktion]]
Als Kommandoname wird immer das erste Wort eines einfachen Kommandos erkannt. Ein Kommandoname kann mit Pfadnamen in
+
*[[Linux-Dateisystem#Pfadnamen|Pfad]]
einem Verzeichnis (absolut oder relativ) 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, mit den Scriptfunktionen und
 
schließlich mit den Shellfunktionen verglichen.
 
 
 
Wird auf diese Weise kein Programm dieses Namens gefunden, werden alle 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 und type===
Zeile 39: Zeile 33:
  
 
Beispiel
 
Beispiel
root@zero:~# which startx
+
*which startx
 
  /usr/bin/startx
 
  /usr/bin/startx
  
Zeile 49: Zeile 43:
  
 
Beispiel
 
Beispiel
root@zero:~# type ls
+
*type ls
 
  ls is aliased to `ls --color=auto'
 
  ls is aliased to `ls --color=auto'
  

Aktuelle Version vom 31. Oktober 2023, 08:56 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 eines Befehls erkannt.
  • Ein Kommandoname kann mit absoluten/relativen dem Pfad zum Programm 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 Shell-builtins 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

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