Какая разница между which
а whereis
?
which
и whereis
выдача другого вывода (на macOS Sierra) apple.stackexchange.com/questions/259047/…
type
лучше. Он также знает об определенных псевдонимах, функциях и т. Д.
Какая разница между which
а whereis
?
which
и whereis
выдача другого вывода (на macOS Sierra) apple.stackexchange.com/questions/259047/…
type
лучше. Он также знает об определенных псевдонимах, функциях и т. Д.
Ответы:
Как насчет изучения 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
whereis
, а не к тому, для которого which
.
which
показывает фактический путь. Вы уверены, что указанный путь - which
это не просто символическая ссылка на указанный путь whereis
? Может быть, это псевдоним оболочки. В bash попробуйте запустить type your_cmd_here
.
whereis
ищет в стандартных местоположениях * nix указанную команду.
which
выполняет поиск в вашем пользовательском PATH (который может включать некоторые местоположения, в которых выполняется поиск, и может не включать другие - он может также включать некоторые места, в которых whereis
не выполняется поиск, если вы добавили в свой PATH)
Цитирую их справочные страницы:
где :
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".
который ищет исполняемые файлы в каталогах, указанных в переменной окружения PATH. И если выяснится, будет напечатан полный путь к этому исполняемому файлу.
$ which ls
/ bin / ls
$ which ifconfig
$ # Нет выходных данных, потому что ifconfig существует только в PATH root.
где поиск исполняемых файлов, исходных файлов и страниц справочника с использованием базы данных, созданной системой автоматически.
$ где меньше
меньше: / bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz
Но похоже, что whereis и locate не используют одну и ту же базу данных. Когда я установил программное обеспечение, а затем использовал whereis и сразу же найти его для поиска этого программного обеспечения. Результатом является то, что whereis может найти некоторые файлы, связанные с этим программным обеспечением, в то время как найти не удалось. Они действительно используют другую базу данных? Как работает база данных? - Ну, а как насчет того, чтобы отказаться от педанта? :)