Ребенок щас вопрос задал — пап, а в чем разница? Этож одно и тоже?
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, тогда все взлетит.Ааааа, еще в скрипте тебе нужно обязательно вставить shebang.
В случае с source и точка, эти пиздострадания не нужны. Не нужно ничего экспортировать, выставлять
+x и добавлять shebang.➡️
source script.sh и . script.shНовый процесс: Нет
Изменяет окружение текущей оболочки: Да
Требует shebang: Нет
Требует права на выполнение: Нет
➡️
./script.sh
Новый процесс: Да
Изменяет окружение текущей оболочки: Нет
Требует shebang: Да
Требует права на выполнение: Да
Когда это и где применять?
- Используем source и точку для скриптов, которые должны изменить текущее окружение.
- Используем
./script.sh для независимого выполнения скрипта.Ничего больше нового не скажу. Теперь и ты это знаешь.
tags: #linux #bash
—
🔔 @bashdays➡️ @gitgate