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?

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


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.