Как работает индексирование с командой locate?

Есть БОЛЬШАЯ разница.

Давайте возьмем следующий сценарий, называемый testscript (настроенный на использование / bin / ksh, как вы видите в хэш-банге):

#!/bin/ksh
#im testscript
cd /proc/$$
file exe

Сначала давайте выполним его с помощью ./:

$ ./testscript
exe: symbolic link to /bin/ksh93

Теперь вызываем bash:

$ bash testscript
exe: symbolic link to /bin/bash

Вы видите различия? Интерпретатор, используемый сценарием, изменился во второй команде, поэтому, если сценарий зависит от какого-то конкретного кода ksh , он будет сломан, и другим способом, если сценарии зависят от конкретного bash code, то сломает его с помощью первой команды.

Другой тест, который вы можете сделать, - это вывести $ PATH в двух разных случаях выполнения.

2
16.04.2017, 18:36
1 ответ

Из руководства (man locate):

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

Итак, updatedb записывает базу данных. Обычно он уже настроен для периодического запуска из cron во многих системах. Не должно быть возможности обновить базу данных системы, как обычный пользователь. Так что, возможно, sudo updatedb работает лучше всего во многих системах.

6
27.01.2020, 21:53

Теги

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