Wenn es zum Beispiel ls
als Eingabe übergeben wird, sollte es mir mitteilen, dass es ausgeführt /bin/ls
wird, wenn es ls
in der Befehlszeile ausgeführt wird.
quelle
Wenn es zum Beispiel ls
als Eingabe übergeben wird, sollte es mir mitteilen, dass es ausgeführt /bin/ls
wird, wenn es ls
in der Befehlszeile ausgeführt wird.
Nur eine eingebaute Shell teilt einem korrekt mit, was die Shell für einen bestimmten Befehlsnamen tun wird, da nur eingebaute Shell-Funktionen, Aliase und andere eingebaute Shell-Funktionen usw. vollständig kennen. Denken Sie daran: Nicht alle Befehle entsprechen in erster Linie ausführbaren Dateien.
Für die Bourne Wieder Shell bash
, die sich im internen ist der type
Befehl:
$ type '['
[ is a shell builtin
Für die Fish Shellfish
type
funktioniert The builtin ähnlich wie bash. Um nur den Pfad zu einer ausführbaren Datei abzurufen, verwenden Sie command -v
:
$ type cat
cat is /bin/cat
$ command -v cat
/bin/cat
Für die Korn - Shell ksh
, die eingebaute in der ist whence
Befehl - mit type
zunächst als gewöhnlicher Alias für einzurichten whence -v
und die command
eingebaute mit der -v
Option entspricht whence
:
$ whence -v ls
ls is a tracked alias for /bin/ls
Für die Z - Shell, zsh
, die eingebaute in der ist whence
Befehl, mit der command
eingebauten mit der -v
Option entspricht whence
und die Einbauten type
, which
und where
entspricht whence
mit den Optionen -v
, -c
und -ca
jeweils.
$ whence ls
/bin/ls
Für den TC Shell tcsh
, ist die eingebaute in dem which
Befehl - nicht mit einem externen Befehl mit diesem Namen verwechselt werden:
> which ls
ls: aliased to ls-F
> which \ls
/bin/ls
type
ist auch in zsh eingebaut?which-2.19-6.el6.x86_64
) eine Startdatei geschrieben wird/etc/profile.d/which2.sh
. Dies wird von nicht-csh-Shells gelesen, einschließlich zsh. Es ist ein Aliaswhich
für sich. Insbesondere für zsh-Benutzer überschreibt es die eingebauten Funktionenwhich
.Sie können dafür verwenden
which
:Es funktioniert, indem nach
PATH
ausführbaren Dateien gesucht wird, die mit den Namen der Argumente übereinstimmen. Beachten Sie, dass dies nicht mit Shell-Aliasen funktioniert:type
funktioniert jedoch:quelle
which
ist nicht unbedingt genug für sich. Es wird nur der erste gefundene Name in $ PATH zurückgegeben ... Dieser Name ist möglicherweise ein symbolischer Link und nicht die eigentliche ausführbare Datei am Kettenende .which
gibt die ausführbare Datei ( nicht unbedingt) zurück. Es gibt den ersten passende Datei Namen es in dem $ PATH findet (oder mehrere gleichnamigen Dateien bei der Verwendungwhich -a
) ... Die tatsächliche ausführbare entfernt mehrere Links sein kann.which locate
/usr/bin/locate
`
file $(which locate)
/usr/bin/locate: symbolic link to /etc/alternatives/locate'
Der Befehl, der die eigentliche ausführbare Datei findet
readlink -e
, lautet(in Verbindung mit
which
)readlink -e $(which locate)
/usr/bin/mlocate
So zeigen Sie alle Zwischenlinks an :
quelle
Du kannst es versuchen:
Es gibt mir:
quelle