shell bash bin/sh -с flag source Как передать переменные среды окружения из .env следующей команде

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 Какая разница - как передать переменные из файла другому процессу скрипту:

Key Words for FKN + antitotal forum (CS VSU):