Как загружать переменные из файла .env
Покажу вам как загружать переменные из файла .env? Покажу 2 способа. В первом я использую cd для простоты. Допустим, приложение находится в директории /home/user/aplications/app и в этом приложении есть скрипт /dir1/script.sh. Необходимо срезать часть пути из абсолютного пути "$0" или /home/user/aplications/app/dir1/script.sh. Тут поможет такая конструкция "${FULL_PATH%/dir1/script.sh}". Есть еще способы с использованием dirname, sed, но они сложнее. Далее, после успешного перехода при помощи команды cd мы можем загружать переменные из файла .env.
#!/usr/bin/bash
FULL_PATH="$0"
# срезаю часть пути
DIR_APP="${FULL_PATH%/dir1/script.sh}"
# переход в директорию с приложением
cd $DIR_APP || { echo "Не удалось перейти в директорию"; exit 1; }
# Загружаем переменные из файла .env
set -o allexport; source .env; set +o allexport
Во втором способе я пропишу в переменной путь до приложения. тут не нужен FULL_PATH.
#!/usr/bin/bash
DIR_APP="/home/user/aplications/app"
# Загружаем переменные из файла .env
set -o allexport; source "$DIR_APP.env"; set +o allexport
Потом вы можете использовать эти переменные в bash скрипте. Например, echo $TITLE.
Если вам нужно из двух файлов получить все переменные, то посмотрите на строки ниже. Часто в файле .env.local не хватает переменных.
#!/usr/bin/bash
# загружаем переменные из файлов .env и .env.local
# установите allexport для экспорта переменных
set -o allexport
# загрузите переменные из .env
if [ -f .env ]; then
source .env
fi
# загрузите переменные из .env.local
if [ -f .env.local ]; then
source .env.local
fi
# отключите allexport
set +o allexport