100

Какая разница между which и whereis ?

4 ответа4

113

Как насчет того, чтобы узнать, whereis и which используется 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

В основном, whereis поиск « возможно , полезные» файлы, в то время , which ищет только для исполняемых файлов.

Я редко использую whereis . С другой стороны, which очень полезно, особенно в сценариях. which ответ на следующий вопрос: откуда взялась эта команда?

$  which ls
/bin/ls

$  whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
21

whereis ищет в стандартных местоположениях * nix указанную команду.

which выполняет поиск конкретного пользователя PATH (который может включать в себя некоторые из мест WhereIs поисков, и не может включать в себя другие - это также может включать в себя некоторые места , которые whereis не искать , если бы вы добавили к вашим PATH)

6

Цитирую их справочные страницы:

где :

whereis находит разделы с исходными / двоичными файлами и руководствами для указанных файлов.

Например :

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

то есть исполняемый файл "php" и некоторые другие вещи (например, man-страницы).


и который :

которая возвращает пути к файлам, которые будут выполняться в текущей среде

Например :

$ which php
/usr/bin/php

т.е. только исполняемый файл "php".

1

который ищет исполняемые файлы в каталогах, указанных в переменной окружения PATH. И если выяснится, будет напечатан полный путь к этому исполняемому файлу.

$ который лс
/ бен / лс
$ if ifconfig
$ # Нет вывода, потому что ifconfig существует только в PATH root.

где поиск исполняемых файлов, исходных файлов и страниц справочника с использованием базы данных, созданной системой автоматически.

$ где меньше
меньше: /bin /less /usr /bin /less /usr /bin /X11 /less /usr/share/man/man1/less.1.gz

Но похоже, что whereis и locate не используют одну и ту же базу данных. Когда я установил программное обеспечение, а затем использовал whereis и сразу же найти его для поиска этого программного обеспечения. Результатом является то, что whereis может обнаружить некоторые файлы, связанные с этим программным обеспечением, в то время как locate не может. Они действительно используют другую базу данных? Как работает база данных? - Ну, а как насчет того, чтобы отказаться от педанта? :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .