Kommandolokalisierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
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.
 
*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=
+
* Die Shell versucht ein Kommando auszuführen.
*[[Hashtabelle]]
+
* Dazu muss sie es aber erst lokalisieren.
*[[Aliase]]
+
* Das erste passende Kommando wird ausgeführt.
*[[Funktionen]]
+
* Als Kommandoname wird immer das erste Wort eines Befehls erkannt.
*[[Shell Funktionen]]
+
* Ein Kommandoname kann mit absolutem oder relativem Pfad angegeben werden.
*[[Pfad]]
+
* 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.
  
===which und type===
+
= Reihenfolge der Lokalisierung =
====which====
+
* [[Hashtabelle]]
which gibt die vollen Pfadnamen der Dateien aus, die bei Benutzung des angegebenen Befehls ausgeführt werden würden.
+
* [[Aliase]]
 +
* [[Bash Funktion]]
 +
* [[Eingebaute Bash Funktion]]
 +
* [[Linux-Dateisystem#Pfadnamen|Pfad]]
  
  which [-a] Dateiname  
+
== 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:
 
Optionen:
 +
* '''-a''' – Alle Treffer ausgeben, nicht nur den ersten 
 +
* '''--skip-dot''' – Verzeichnisse, die mit einem Punkt beginnen, auslassen 
  
* -a : Alle Treffer ausgeben, nicht nur den ersten
+
Beispiel:
* --skip-dot : Verzeichnisse, die mit einem Punkt beginnen, auslassen
+
* '''which startx'''
 
 
Beispiel
 
*which startx
 
 
  /usr/bin/startx
 
  /usr/bin/startx
  
====type====
+
=== type ===
Anzeigen der absoluten Pfadnamen von Befehlen, und ob sich diese Befehle in der Hash-Tabelle der aktuellen
+
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.
Shell befinden.
 
  
  type [Optionen] Befehle
+
  '''type [Optionen] Befehl'''
  
Beispiel
+
Beispiel:
*type ls
+
* '''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 
  
* -a : Alle vorkommenden Befehle werden ausgegeben, nicht nur das, welches aufgerufen werden würde
+
* '''-p''' – Zeigt den Eintrag des Befehls in der Hash-Tabelle an (kann vom ersten Treffer in PATH abweichen) 
root@zero:~# type '''-a''' ls
+
  root@zero:~# '''type -p apache2'''
ls is aliased to `ls --color=auto'
+
  /usr/sbin/apache2
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
+
* '''-t''' – Gibt an, ob ein Befehl ein Alias, Schlüsselwort, eine Funktion, ein Built-in oder eine Datei ist
  root@zero:~# type '''-t''' apache2
+
  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