Есть БОЛЬШАЯ разница.
Давайте возьмем следующий сценарий, называемый 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 в двух разных случаях выполнения.
Из руководства (man locate
):
locate читает одну или несколько баз данных, подготовленных с помощью updatedb(8), и записывает имена файлов, соответствующие как минимум одному из ШАБЛОНОВ, в стандартный вывод, по одному в строке. .
Итак, updatedb
записывает базу данных. Обычно он уже настроен для периодического запуска из cron во многих системах. Не должно быть возможности обновить базу данных системы, как обычный пользователь. Так что, возможно, sudo updatedb
работает лучше всего во многих системах.