Jaka jest różnica między which
i whereis
?
which
i whereis
daje różne dane wyjściowe (na macOS Sierra) apple.stackexchange.com/questions/259047/…
type
jest lepszy. Wie także o zdefiniowanych
Jaka jest różnica między which
i whereis
?
which
i whereis
daje różne dane wyjściowe (na macOS Sierra) apple.stackexchange.com/questions/259047/…
type
jest lepszy. Wie także o zdefiniowanych
Odpowiedzi:
Co powiesz na naukę whereis
i which
korzystanie whatis
?
$ whatis which
which (1) - shows the full path of (shell) commands
$ whatis whereis
whereis (1) - locate the binary, source, and manual page files for a command
Zasadniczo whereis
wyszukuje „potencjalnie przydatne” pliki, podczas gdy which
szuka tylko plików wykonywalnych.
Rzadko używam whereis
. Z drugiej strony which
jest bardzo przydatny, szczególnie w skryptach. which
jest odpowiedź na następujące pytanie: Skąd pochodzi to polecenie?
$ which ls
/bin/ls
$ whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
whereis
, a nie do tego which
.
which
pokazuje rzeczywistą ścieżkę. Czy jesteś pewien, że wskazana ścieżka which
nie jest tylko dowiązaniem symbolicznym do wskazanej ścieżki whereis
? Może to jest alias powłoki. W bash spróbuj uruchomić type your_cmd_here
.
whereis
przeszukuje standardowe lokalizacje * nix w poszukiwaniu określonego polecenia.
which
przeszukuje Twoją ŚCIEŻKĘ określoną przez użytkownika (która może obejmować niektóre lokalizacje, w których przeszukuje, i może nie obejmować innych - może również obejmować niektóre miejsca, które whereis
nie wyszukują, jeśli dodałeś do ŚCIEŻKI)
Cytując strony man:
gdzie :
whereis lokalizuje sekcje źródłowe / binarne i podręczniki dla określonych plików.
Na przykład :
$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz
tzn. plik wykonywalny „php” i kilka innych rzeczy (takich jak strony podręcznika man).
i który :
który zwraca ścieżki do plików, które zostałyby wykonane w bieżącym środowisku
Na przykład :
$ which php
/usr/bin/php
tzn. tylko plik wykonywalny „php”.
które wyszukują pliki wykonywalne w katalogach określonych przez zmienną środowiskową PATH. A jeśli się dowiesz, zostanie wydrukowana pełna nazwa ścieżki tego pliku wykonywalnego.
$ which ls
/ bin / ls
$ which ifconfig
$ # Brak danych wyjściowych, ponieważ ifconfig istnieje tylko w ścieżce roota.
whereis automatycznie wyszukuje pliki wykonywalne, pliki źródłowe i strony podręcznika, korzystając z bazy danych zbudowanej przez system.
$ whereis mniej
mniej: / bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz
Wygląda jednak na to, że whereis i locate nie korzystają z tej samej bazy danych. Kiedy zainstalowałem oprogramowanie, a następnie użyłem whereis i natychmiast zlokalizowałem, aby wyszukać to oprogramowanie. Powoduje to, że whereis może znaleźć niektóre pliki związane z tym oprogramowaniem, podczas gdy lokalizacja nie może. Czy naprawdę używają innej bazy danych? Jak działa baza danych? - No to może odmówić bycia pedantem? :)