Jak sprawdzić, jakie polecenie jest podejmowane?

9

Mam skrypt o nazwie foo.shw /usr/local/sbin. Poza tym używam innego skryptu o tej samej nazwie. Jest przechowywany w /home/user/scripts.

Obie ścieżki należą do PATH. Jak mogę dowiedzieć się, który z tych skryptów jest wykonywany podczas pisania foo.shw wierszu poleceń? Czy mogę na to wpłynąć?

zero
źródło

Odpowiedzi:

10

Kilka dni temu byłem zadowolony z mojej odpowiedzi. Wiedziałem również, że whichpolecenie nie jest używane do testowania, czy polecenie istnieje. Teraz moja odpowiedź nie jest tak zadowolona i odnoszę się do tej wspaniałej odpowiedzi .


Za pomocą prostego whichpolecenia:

which foo.sh

Lub typepolecenie:

type foo.sh

Możesz na to wpływać poprzez kolejność ścieżek w ścieżce $PATHlub ścieżkę bezwzględną, gdy skrypt zaczyna się, np

/home/user/scripts/foo.sh

Przykład

Jeśli ŚCIEŻKA jest zdefiniowana jak poniżej

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

I zaczynasz skrypt lub coś innego, co jest w /usr/local/binśrodku /usr/bin, skrypt /usr/local/binma wyższy priorytet.

AB
źródło
1
Rozmawianie bashi zshtam również typewbudowany; zamiast tego w zsh which, inaczej niż bash, jest wbudowany (i nie /usr/bin/which)
Kos
@muru dzięki. Trochę już o tym wiedziałem, ale nie tak szczegółowo. Dodałem swoje opinie do mojej odpowiedzi. Dzięki jeszcze raz.
AB