Willst du manchmal wissen: Was wird jetzt eigentlich ausgeführt, wenn ich ls tippe ❓
Oder bei einem anderen Befehl? Super! Denn dieser Artikel zeigt dir, wie du genau das mit type herausfinden kannst, welche zusätzlichen Informationen du bekommst und wie du diese Ausgabe für Skripte nutzbar machst.
Grundlegende Syntax
Der Bash‑Builtin type liefert Informationen darüber, wie der aktuelle Shell‑Interpreter einen Namen auflöst:
|
|
Hierbei ist NAME ein beliebiger Befehl, Alias, Funktion, Keyword‑ oder Shell‑Builtin.
Ohne Optionen gibt type den Typ des Namens und - falls es ein ausführbares Programm ist - den vollständigen Pfad aus.
Hinweis:
typeist ein Bash‑Builtin. Andere Shells (wiezsh,fish) besitzen eigene, meist kompatible Varianten, die aber leicht unterschiedliche Optionen haben können.
Einfaches Beispiel
|
|
Das sagt also, dass ls ein Alias ist, der von der Distribution (hier Ubuntu/Debian) angelegt wird. Hingegen ist pwd ein eingebautes Shell‑Builtin, also kein eigenständiges Programm im Dateisystem.
Wichtige Optionen von type
| Option | Bedeutung |
|---|---|
-a |
Zeigt alle Vorkommen des Namens an - Aliase, Funktionen, Builtins und jedes im $PATH gefundene Executable. |
-f |
Gibt nur den Pfad zum ausführbaren Programm zurück, ohne Informationen zu Aliasen, Funktionen oder Builtins. |
-t |
Gibt nur den Typ als reine Zeichenkette zurück: alias, builtin, file, function oder keyword. |
-p |
Wie -f, aber ignoriert Aliase, Funktionen und Builtins - es wird ausschließlich nach einer Datei im $PATH gesucht. |
-P |
Gibt den Pfad zum 1. Treffer im $PATH zurück, selbst wenn ein Alias oder eine Funktion gleichen Namens existiert. |
Tipp: Kombiniere Optionen, um exakt das zu erhalten, was du brauchst, zum Beispiel
type -a -t git→ gibtaliasundfilezurück.
Praktische Beispiele
Alle Vorkommen eines Befehls
|
|
Auch type selbst ist sowohl ein Builtin (von Bash) als auch ein externes Programm (/usr/bin/type).
Nur den Pfad erhalten - ohne Alias/Funktion
|
|
Hier wird sofort das ausführbare Programm angezeigt, egal ob ein Alias definiert ist.
Nur den Typ zurückgeben
|
|
Für Skripte ist das sehr nützlich, weil du dann zum Beispiel if [ "$(type -t mycmd)" = "alias" ]; then ... verwenden kannst.
Pfad nur aus $PATH - Alias/Funktion ignorieren
|
|
Obwohl grep als Alias existiert, liefert -p den tatsächlichen Programm‑Pfad.
Erstes $PATH‑Ergebnis - selbst bei vorhandenen Aliasen
|
|
Die Option -P ist besonders praktisch, wenn du wissen möchtest, welches Programm ein Alias überschreibt - also wer dahinter steckt 😷
Fazit
Der type‑Befehl ist ein universelles Werkzeug, um in Bash (und den meisten anderen POSIX‑kompatiblen Shells) schnell zu erkennen, wie ein Name interpretiert wird.
- Verwende
typeohne Optionen, um einen schnellen Überblick zu bekommen. - Setze
-aein, wenn du jedes mögliche Vorkommen willst - das hilft beim Debuggen komplexer Alias‑Chains. - Die Optionen
-f,-pund-Pliefern dir den exakten Pfad, den du für Skripte, Debugging oder zur Umgehung eines überschriebenen Built-ins benötigst. - Und
-tliefert nur den Typ, was ideal ist für bedingte Logik in Bash‑Skripten.
Mit diesen Optionen bist du in der Lage, alle Unklarheiten über die Herkunft eines Befehls zu beseitigen - ein Muss für Systemadministratoren, Entwickler und alle, die das Terminal regelmäßig nutzen.
Verwandte Befehle
Willst du tiefer einsteigen? Dann sieh dir auch die verwandten Befehle zu type an:
- file - erkennt Dateitypen, nicht nur Shell‑Befehle.
- stat - liefert detaillierte Dateiinformationen (Zeitstempel, Berechtigungen, …).
- which - ein einfacher Wrapper, der im Grunde
type -pnachahmt. - command - führt Befehle ohne Alias/Funktions‑Überschreibung aus.
Hilfe zu type
Mehr zu type findest du unter:
|
|
Falls auf deinem System ein Fehler erscheint, wenn du man type eingibst, liegt das daran, dass type ein Bash‑Builtin ist und keine eigene Man‑Page besitzt. Öffne einfach man bash und suche dort nach type.
Mehr zu man findest du unter tldr man. Details zum Befehl tldr gibt es hier.