Ich habe eine minimale Fedora-Installation getestet. Um den Pfad nach Interpreten wie Python oder Node zu überprüfen, verwende ich normalerweise which
.
Ich stelle fest, dass which
nicht standardmäßig installiert ist. Ich könnte das Paket hinzufügen, aber ich frage mich, ob es eine integrierte Shell gibt, mit der diese allgemeine Aufgabe ausgeführt werden kann.
Ich benutze Bash 4.2.
which
. Warum nicht "welches" verwenden? Was ist dann zu verwenden?Antworten:
Du kannst folgendes benutzen
type
, welches ein Bash ist:Dokumentation finden Sie unter
help [t]ype
, der auf dentype
Abschnitt in derbash
Manpage verweist .(
help type
druckt die Hilfeseiten für zwei Builtins, die mit der Zeichenfolge "type" beginnen, von denen eine veraltet ist und in keinerlei Beziehung dazu steht.)quelle
type -a
mich. Warum die Klammern[t]ype
?type -a
Gibt alle Dinge aus, auf die das Argument verweist, und nicht nur, was ausgeführt wird, wenn es eingegeben wird.which
. Warum nicht "welches" verwenden? Was ist dann zu verwenden?type -a
ist immer, was es ausführen würde. Ich mache das gleiche wie Glenn und benutzetype -a
es immer auch.type -p
Zeigt den Pfad nicht an, wenn der Befehl ein Alias ist.type -P
Zeigt den Befehlspfad immer richtig an. Meiner Ansicht nach. Wir sollten die akzeptierte Antwort alstype -P
@ l0b0Sie können
type
oder verwendencommand -v
. Die Ausgabe vontype
ist vom Menschen lesbar; Die Ausgabe voncommand -v
kann von Bash ausgeführt werden.Beachten Sie, dass sie tatsächlich ein bisschen anders sind.
type
undcommand
suchen Sie den Hash-Wert des Befehls. Das heißt, wenn Sie schreibencmd
,type cmd
odercommand -v cmd
wird Ihnen genau sagen , was laufen wird. Sie können auch Aliase, Bash-Funktionen und Bash-Builtins bearbeiten (obwohltype -p
diese ignoriert werden und nur echte Dateien zurückgegeben werden).which
Sucht einfach nach dem Pfad. Das ist anders, weil:which
, aber wenn Sie diesen Befehl ausführen, wird der Hash-Wert verwendet (Sie können erzwingen, dass der Hash in Bash mit aktualisiert wirdhash -r
).Normalerweise wollen die Leute wirklich
type
,which
zumindest nicht für den interaktiven Gebrauch, indem sie herausfinden, "woher dieser Befehl kommt, wenn ich ihn ausführe?" Sie sollten nur verwenden,which
wenn Sie wirklich eine PATH-Suche durchführen möchten.quelle
command -v
ist das Äquivalent vonksh
whence
.where
,whence
und natürlich auchwho
,why
undwhen
? Warum gibt es keinewhat
?echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what