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