Я использую команду whereis rm
$ whereis rm
/bin/rm
Затем я пробую which rm
$ which rm
/usr/local/opt/coreutils/libexec/gnubin/rm
Результаты отличаются... так который rm
будет назван, когда я выполню команду как rm readme
?
Этот ответ на Суперпользователе Denilson Sá Maia может быть полезным:
which
ищет Ваш определенный для пользователя ПУТЬ (который может включать некоторые местоположения whereis поиски и не может включать других - он мог бы также включать некоторые места этоwhereis
не ищет, если Вы добавили к своему ПУТИ).
whereis
ищет стандарт *отклоняют местоположения для указанной команды.$ 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
Согласно руководству which
:
то, которое возвращает пути файлов (или ссылки), который был бы выполнен в текущей среде, имело ее аргументы, данный как команды в строго совместимой на POSIX оболочке. Это делает это путем поиска ПУТИ исполняемые файлы, соответствующие названиям аргументов. Это не канонизирует пути.
Согласно руководству whereis
:
whereis определяет местоположение двоичного файла, источника и ручных файлов для указанных названий команды. Предоставленные имена сначала лишены продвижения компонентов пути и любого (единственного) запаздывающего расширения формы .ext (например:.c), с Префиксами s., следующего из использования управления исходным кодом, также имеют дело. whereis затем пытается определить местоположение желаемой программы в стандартных местах Linux, и в местах, указанных $PATH и $MANPATH.
Так ясно существует очень тонкое из различия среди них. which
результаты включают путь исполняемого файла в то время как whereis
результаты в двоичных файлах и документации.
, Например, рассмотрите Java:
which
результаты во всего одном пути, т.е. пути исполняемого файла Java
/usr/bin/java
whereis
результаты приблизительно в соединяет каналом, т.е. путь двоичного файла Java, источника и руководства
java: /usr/bin/java /usr/share/java /usr/share/man/man1/java.1.gz