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.