27

В чем разница между locateи whichв Linux?

Почему, когда я использую locate mentor, он перечисляет всех наставников, а когда я использую, which mentorон говорит «нет наставника в ...» - что это означает?

Share a link to this question
CC BY-SA 3.0
| улучшить этот вопрос | |
  • Также есть whereи whereis. Ян Тоджнар, 29 марта 2016, 20:20
  • в Баш, предпочитают: type -all acommand. И если я прочитал проблему XY, стоящую за вашим вопросом: у вас есть команда, вы можете увидеть ее через locate, но не можете ее выполнить? затем отредактируйте PATH либо в ~/.profileфайле конкретного пользователя , либо, если вы уверены, что знаете, что делать, в глобальном /etc/profileфайле [ПРЕДУПРЕЖДЕНИЕ: вы можете нарушить системные скрипты (и, возможно, большую часть ОС), если добавите неправильный путь в $ PATH из / etc / profile ... (например: пути, содержащие команды, обычно находящиеся в другом месте). Предпочитайте добавлять только в КОНЕЦ переменной. И, пожалуйста, не помещайте ::или . в этот ПУТЬ. Olivier Dulac 30 марта '16 в 14:52
45

В чем разница между locateи which?

locate использует ранее созданную базу данных для поиска файла.

locateчитает одну или несколько баз данных, подготовленных updatedb(8), и записывает имена файлов, соответствующие хотя бы одному из ШАБЛОНОВ, в стандартный вывод, по одному в каждой строке.

Source locate (1) - справочная страница Linux

updatedbсоздает или обновляет базу данных, используемую locate(1). Если база данных уже существует, ее данные используются повторно, чтобы избежать повторного чтения каталогов, которые не изменились.

updatedbобычно запускается ежедневно cron(8) для обновления базы данных по умолчанию ( /var/lib/mlocate/mlocate.db)

Source updatedb (8) - справочная страница Linux


whichищет исполняемый файл, ища его в каталогах в PATHпеременной окружения.

whichпринимает один или несколько аргументов. Для каждого из своих аргументов он выводит stdoutполный путь к исполняемым файлам, которые были бы выполнены, если бы этот аргумент был введен в приглашение оболочки. Это достигается путем поиска исполняемого файла или сценария в каталогах, перечисленных в переменной среды PATH.

используя тот же алгоритм, что и bash(1).

Source which (1) - справочная страница Linux


locate mentorперечисляет наставников, но which mentorговорит "нет наставника в ..."

Что это значит?

У вас есть файлы с именами, mentorкоторые можно найти в locateбазе данных.

У вас нет исполняемого файла или скрипта с именем mentorв вашем PATH