Как предоставить среду для скрипта, запускаемого как bash -c bla.sh

0

Я заметил, что, например, ~ / .bashrc не получен при запуске скрипта с помощью bash -c bla.sh. Так как еще я могу предоставить переменные среды? Желательно без явной установки их в вызове.

rhall
источник

Ответы:

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... но не то, чтобы это обычно настраивало ряд вещей для терминальной / интерактивной среды - это не то, как выполняются сценарии.

Attie
источник
Спасибо. Я решил написать скрипт-обертку, который будет исходной средой перед запуском реального скрипта, например: source test.env; $@, Я не говорил, что bla.sh - это просто заполнитель для множества разных скриптов или команд.
rhall