Привет чокаво.
Ребенок щас вопрос задал — пап, а в чем разница? Этож одно и то же?
source script.sh
. script.sh
./script.sh
В первых двух случаях, да это одно и то же. Source и точка, это идентичные команды. Точка сделана для краткости.
Команда source и точка, используется для выполнения команд из файла в текущем сеансе оболочки.
VAR="bashdays"
source script.sh
. script.sh
Передаем в скрипт переменную VAR, по итогу если в скрипте сделать echo $VAR, то на экран выведется слово — bashdays.
Если же сделать так:
VAR="bashdays"
./script.sh
Нихуя не выведется и даже не запустится если нет атрибута +x.
Потому, что в этом случае запустится новый процесс, который не видит локальные переменные текущей оболочки, если они не были экспортированы.
Чтобы это заработало нужно сделать:
export VAR="bashdays"
./script.sh
Ну и захуячить chmod +x script.sh, тогда все взлетит.
В случае с source и точка, эти пиздострадания не нужны. Не нужно ничего экспортировать, выставлять +x и добавлять shebang.
Когда это и где применять?
Используем source и точку для скриптов, которые должны изменить текущее окружение.
Используем
./script.shдля независимого выполнения скрипта.








Комментарии