Какая разница между 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 .