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:
type
ist 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
→ gibtalias
undfile
zurü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
type
ohne Optionen, um einen schnellen Überblick zu bekommen. - Setze
-a
ein, wenn du jedes mögliche Vorkommen willst - das hilft beim Debuggen komplexer Alias‑Chains. - Die Optionen
-f
,-p
und-P
liefern dir den exakten Pfad, den du für Skripte, Debugging oder zur Umgehung eines überschriebenen Built-ins benötigst. - Und
-t
liefert 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 -p
nachahmt. - 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.