Какая разница между locate
и which
в Linux?
Почему, когда я использую locate mentor
, он перечисляет всех наставников, но когда я использовал, which mentor
говорит «нет наставника в ...» - что это значит?
locate
и which
?locate
использует ранее созданную базу данных для поиска файла.
locate
считывает одну или несколько баз данных, подготовленныхupdatedb
(8), и записывает имена файлов, соответствующие по крайней мере одному из PATTERN, в стандартный вывод, по одному на строку.
Source locate(1) - справочная страница по Linux
updatedb
создает или обновляет базу данных, используемуюlocate
(1). Если база данных уже существует, ее данные используются повторно, чтобы избежать перечитывания каталогов, которые не изменились.
updatedb
обычно запускается ежедневноcron
(8) для обновления базы данных по умолчанию (/var/lib/mlocate/mlocate.db
)
Источник updatedb(8) - справочная страница по Linux
which
ищет исполняемый файл путем поиска его в каталогах в переменной окружения PATH
.
which
принимает один или несколько аргументов. Для каждого из своих аргументов она выводит наstdout
полного пути к исполняемым , которые были бы выполнены , когда этот аргумент был введен в командной строке. Это делается путем поиска исполняемого файла или сценария в каталогах, перечисленных в переменной окруженияPATH
.
используя тот же алгоритм, что и bash
(1).
Источник который (1) - справочная страница по Linux
locate mentor
списки наставника, но which mentor
говорит "нет наставника в ..."Что это значит?
У вас есть несколько файлов с именем mentor
которые можно найти в базе данных locate
.
В вашей mentor
нет исполняемого файла или сценария с именем PATH
.
which
должен найти команду (which
возвращает путь к файлам / ссылкам, которые будут выполнены в текущей среде)
locate
- это поиск файлов по имени (locate
читает одну или несколько баз данных, подготовленных updatedb
и записывает имена файлов, соответствующие по крайней мере одному из шаблонов, в стандартный вывод, по одному на строку)
locate
по умолчанию принимает шаблон glob (также можно использовать шаблон Regex) и ищет в базе данных /var/lib/mlocate/mlocate.db
любое имя файла, соответствующее шаблону.
which
является командой для поиска полного пути команды в каталогах, интерпретируемой переменной среды PATH
.