Баш шебанг вариант-л
Я использую сценарий, 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.