Возможно, вы захотите взглянуть на 4 способа выполнения сценария оболочки и Руководства по выполнению сценария оболочки . Основное различие между обоими стилями:
script/generate ...
не будет работать, если родительский каталог script не находится в вашей текущей среде PATH. (Ну, это конечно зависит от того, как реализован метод поиска оболочки. Могут быть реализации, которые - в крайнем случае - ищут в вашем текущем рабочем каталоге).
EDIT
Хорошо, я провел некоторое исследование по этому вопросу, так как сам, похоже, не знал, в чем разница. Итак, вот к чему я пришел:
Синтаксис ./
(точка косая черта) является псевдонимом для абсолютного пути текущей рабочей директории, так что, например, с помощью. /home/peter/script
являющийся cwd -
peter@linux:/home/peter/script$./myscript
расширен до /home/peter/script/myscript
. Псевдоним косой черты в основном дает оболочке подсказку, где найти исполняемый файл / скрипт.
Это намек, что важно, и именно поэтому
peter@linux:/home/peter$script/myscript
работает так же, как
peter@linux:/home/peter/script$myscript
не будет. Первый помогает оболочке в поиске подходящего исполняемого файла / скрипта, предоставляя некоторую контрольную точку (а именно каталог script
). Последний, с другой стороны, оставляет оболочку с возможно неоднозначной командой, поскольку в $ PATH пользователя может быть одноименный скрипт.
Итак, чтобы закончить, оба стиля, для которых вы задали разницу, делают в основном одно и то же - дают оболочке подсказку, где искать исполняемый файл / скрипт. После этого оболочка сможет однозначно разрешить правильный файл и успешно выполнит его.
Хорошего дня.