Баш шебанг вариант-л
Я использую сценарий, test.sh
, написанный кем-то другим, начинается с bash shebang:
#!/bin/bash -l
...
echo TEST: $TEST
Из того, что я мог видеть, это влияет на переменные, используемые внутри скрипта:
- если я бегу
TEST=hey ./test.sh
, я могу видетьTEST: hop
,hop
будучи значением переменнойTEST
в моем.bash_profile
- это то же самое, если я
export TEST=hey
перед запуском скрипта - но если я удалю флаг
-l
, та же команда вернетTEST: hey
, как я и ожидал
Может ли кто-то пожалуйста, объясните это поведение ? Помощи от Баша не последовало... помощь.
1 ответ:
Опция
-l
(согласно man-странице ) заставляет "bash действовать так, как если бы он был вызван в качестве оболочки входа". Оболочки входа считывают определенные файлы инициализации из вашего домашнего каталога, например.bash_profile
. Поскольку вы задаете значениеTEST
в вашем.bash_profile
, значение, заданное в командной строке, переопределяется при запускеbash
.