Я заметил, что, например, ~/.bashrc не получен при запуске скрипта с помощью bash -c bla.sh. Так как еще я могу предоставить переменные среды? Желательно без явной установки их в вызове.
1 ответ
Вы можете предоставить их в командной строке (которую вы заявили, что не хотите):
MYVAR=hello ./bla.sh
Вы можете установить и экспортировать их в первую очередь:
MYVAR=hello
export MYVAR
./bla.sh
или же
export MYVAR=hello
./bla.sh
Вы можете настроить файл « environment » и использовать его в своем скрипте (вот как обрабатывается ~/.bashrc
):
echo "MYVAR=hello" > test.env
./bla.sh
В пределах bla.sh
:
source test.env
echo ${MYVAR}
Обратите внимание , .
(точка / точка) является псевдонимом для source
, так что вы можете поставить . test.env
вместо source text.env
.
Если вы хотите импортировать ваш ~/.bashrc
, то вы можете использовать source ~/.bashrc
... но не то, чтобы это обычно настраивало несколько вещей для терминальной / интерактивной среды - это не то, как выполняются скрипты.