Установка переменных с помощью команды exec
Вы можете установить переменную для одной команды следующим образом:
MY_VARIABLE=my_value ./my_script.sh
Вы можете передать другой script следующим образом:
exec ./my_script.sh
Но когда я пытаюсь сделать так:
exec MY_VARIABLE=my_value ./my_script.sh
Я получаю сообщение об ошибке:
exec: MY_VARIABLE=my_value: not found
Почему это?
Есть ли способ сделать это?
Ответы
Ответ 1
Вам нужно использовать env
для указания переменной среды:
exec env MY_VARIABLE=my_value ./my_script.sh
Если вы хотите, чтобы ваш script начинался с пустой среды или только с указанными переменными, используйте параметр -i
.
От man env
:
env - run a program in a modified environment
Ответ 2
В bash вы можете установить переменные среды для команды, поставив назначения в начале команды. Это работает так же для exec
, как и любая другая команда, поэтому вы пишете:
MYVARIABLE=my_value exec ./my_script.sh