Wie überprüfe ich, welcher Befehl ausgeführt wird?

9

Ich habe einen Shell - Skript genannt foo.shin /usr/local/sbin. Außerdem benutze ich ein anderes Skript mit dem gleichen Namen. Es ist gespeichert in /home/user/scripts.

Beide Wege gehören dazu PATH. Wie kann ich herausfinden, welches dieser Skripte beim Eingeben foo.shin die Befehlszeile ausgeführt wird? Kann ich das beeinflussen?

Null
quelle

Antworten:

10

Vor ein paar Tagen war ich mit meiner Antwort zufrieden. Ich wusste auch, dass der whichBefehl nicht verwendet wird, um zu testen, ob ein Befehl existiert. Jetzt bin ich mit meiner Antwort nicht so zufrieden und beziehe mich auf diese großartige Antwort .


Mit einem einfachen whichBefehl:

which foo.sh

Oder ein typeBefehl:

type foo.sh

Und Sie können dies durch die Reihenfolge der Pfade in Ihrem $PATHoder über einen absoluten Pfad beeinflussen, wenn das Skript gestartet wird, z

/home/user/scripts/foo.sh

Beispiel

Wenn PATH wie folgt definiert ist

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Und Sie starten ein Skript oder etwas anderes, das sich in /usr/local/binund in befindet /usr/bin, das Skript hat /usr/local/bineine höhere Priorität.

AB
quelle
1
Apropos bashund zshes gibt auch das typeeingebaute; stattdessen in zsh which, anders als bash, ist ein eingebautes (und nicht /usr/bin/which)
kos
@ Guru danke. Ein wenig wusste ich schon davon, aber nicht so detailliert. Ich habe meine Ansichten zu meiner Antwort hinzugefügt. Danke noch einmal.
AB