whereis возвращает другой путь к который

Я использую команду whereis rm

$ whereis rm
/bin/rm

Затем я пробую which rm

$ which rm
/usr/local/opt/coreutils/libexec/gnubin/rm

Результаты отличаются... так который rm будет назван, когда я выполню команду как rm readme?

5
задан 13 December 2018 в 22:39

2 ответа

Этот ответ на Суперпользователе 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
5
ответ дан 23 November 2019 в 08:58

Согласно руководству 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
    
3
ответ дан 23 November 2019 в 08:58

Другие вопросы по тегам:

Похожие вопросы: