Uzyskaj pełną ścieżkę skryptu w zmiennej środowiskowej PATH

4

Zastanawiałem się, czy w Bash jest wbudowane polecenie (a nawet coś specyficzne dla OSX), które wyświetlałoby w pełni rozwiązaną ścieżkę skryptu w bieżącej PATHzmiennej środowiskowej.

Na przykład mój PATHobecnie wygląda następująco:

>: echo $PATH | tr ":" "\n"
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/opt/X11/bin
/Users/Josh/Dropbox/Scripts/Bash
/Users/Josh/Dropbox/Tools/WinRAR/OSX

I w Dropbox jest skrypt o nazwie get-azurelogs.sh. Ta ścieżka znajduje się w mojej PATHzmiennej dla wygody, ale jeśli chciałbym wyświetlić pełną ścieżkę do tego skryptu, zakładając, że nie jestem pewien, gdzie ona jest, istnieje prosty jednoliniowy sposób wyświetlania w pełni rozwiązanej ścieżki zamiast jej testowania w każdym z powyższych katalogów?

Josh
źródło

Odpowiedzi:

6

Możesz użyć which. Ze strony podręcznika:

Które narzędzie pobiera listę nazw poleceń i przeszukuje ścieżkę dla każdego pliku wykonywalnego, który zostałby uruchomiony, gdyby te polecenia zostały faktycznie wywołane

Matt G.
źródło
Bum. Wiedziałem, że coś musi być. Akceptuje odpowiedź, gdy tylko upłynie obowiązkowy okres oczekiwania. Dzięki!
Josh
ups, początkowo nie widziałem twojej odpowiedzi. Twoje zdrowie!
njboot
4

Dobrą alternatywą whichjest wbudowane type. Zaletą jest typeto, że jest w stanie obsługiwać aliasy i funkcje bash.

Asmus
źródło
Jest też to, type -Pco ogranicza się do plików wykonywalnych tylko na dysku - nie są wyświetlane żadne aliasy.
Rich Homolka
2
which -a [nameofexecutable]

TO ZNACZY:

Macbook-Pro:~ njboot$ which -a chmod 
/bin/chmod
Macbook-Pro:~ njboot$ which -a nusers
/Users/njboot/bin/nusers
njboot
źródło