shell bash bin/sh -с flag source Как передать переменные среды окружения из .env следующей команде
Primary tabs
shell bash bin/sh -с flag source Не работает экспорот переменных из .env для следующей команды с флагом -c
Команда source не экспортирует переменные из env при вызове в формате:
/bin/sh -c "source .env.test1 && echo $BASE_VAL"
При этом содержимое файла .env.test1 :
BASE_VAL=2
Точно также свежее значение не считает и bash:
/bin/bash -c ". ./.env.test1 && echo $BASE_VAL"
Возможное решение
Именно для данного формата проверки достаточ просто экранировать доллар, иначе баш просто подставляет предыдущее значение вместо переменной, вот так будет работать:
/bin/bash -c ". ./.env.test1 && echo \$BASE_VAL"
Идея: https://unix.stackexchange.com/a/135074
-- эту штука сработает если после && у вас идет bash-команда, а вот если там запускается отдельный процесс (напр. php-скрипт), то не сработет и нам потребуется export или его эквивалент - для чего подойдет allexport:
sh -c 'set -o allexport && source .env.test1 && set +o allexport && php myscript.php '
Видео: bash shell export source Какая разница - как передать переменные из файла другому процессу скрипту:
- Log in to post comments
- 106 reads