.env обычно хранит такие значения в формате NAME=value, но Bash не загружает его автоматически: файл нужно явно импортировать или использовать инструмент, который его поддерживает.
.env обычно хранит такие значения в формате NAME=value, но Bash не загружает его автоматически: файл нужно явно импортировать или использовать инструмент, который его поддерживает.
Что такое переменные окружения
Переменные окружения — это значения, доступные процессу и его дочерним процессам. Их используют для настройки приложения без изменения исходного кода: адреса базы, режима запуска, URL внешних сервисов, порта или уровня логирования.
Как посмотреть переменные
env
printenv
printenv HOME
echo "$PATH"Как задать переменную в shell
APP_ENV=development
export APP_ENV
export PORT=8000
APP_ENV=production python main.pyПеременная без export доступна только текущему shell. После export она передаётся дочерним процессам.
Файл .env
Файл .env обычно содержит конфигурацию в формате KEY=value.
APP_ENV=development
PORT=8000
DATABASE_URL=postgresql://app:password@localhost:5432/app_db
LOG_LEVEL=infoКак загрузить .env в Bash
set -a
source .env
set +a
echo "$APP_ENV"Команда source .env выполняет содержимое файла в текущем shell. Перед загрузкой файла нужно убедиться, что ему можно доверять: source не просто читает значения, а исполняет shell-код.
.env в Docker Compose
Docker Compose может использовать .env для подстановки значений в compose-файл. Отдельно сервису можно передать env-файл через env_file.
services:
web:
image: my-app:latest
env_file:
- .envБезопасность
Файл .env часто содержит секреты, поэтому его обычно добавляют в .gitignore. В production чувствительные значения лучше получать из secrets manager, защищённых переменных CI/CD или механизма секретов оркестратора.
Как ответить на собеседовании
Переменные окружения передают конфигурацию процессу без изменения кода. Я задаю их через export NAME=value или передаю при запуске команды. В .env использую формат KEY=value, но помню, что Bash не загружает такой файл автоматически и что секреты нельзя коммитить в репозиторий.
Оцени свой прогресс