Ответ
В контексте DevOps работа с переменными окружения — это ежедневная практика для конфигурации приложений и скриптов. Способ установки зависит от контекста:
1. Временная переменная (для текущей сессии shell):
export MY_API_KEY="sk_live_12345"
# Теперь её можно использовать в дочерних процессах
echo "Key is $MY_API_KEY"
2. Постоянная переменная для пользователя: Добавляю строку с export в конец файла профиля оболочки.
# Для bash
echo 'export MY_APP_HOME="/opt/myapp"' >> ~/.bashrc
source ~/.bashrc
# Для zsh
echo 'export MY_APP_HOME="/opt/myapp"' >> ~/.zshrc
source ~/.zshrc
3. Глобальная переменная для всех пользователей (используется реже и с осторожностью):
# Запись в системный файл (требует прав root)
echo 'MY_GLOBAL_VAR="value"' | sudo tee -a /etc/environment
4. В сценариях автоматизации (Ansible, Shell-скрипты): Я задаю переменные непосредственно перед вызовом команды, чтобы их область видимости была ограничена.
DATABASE_URL="postgresql://user:pass@localhost/db" python3 my_script.py
# Или в начале скрипта
#!/bin/bash
export DEPLOY_ENV="production"
./deploy.sh
5. В Docker переменные окружения — ключевой механизм конфигурации. Я задаю их в Dockerfile для значений по умолчанию и переопределяю при запуске контейнера.
# Dockerfile
ENV NODE_ENV="production"
# Запуск контейнера с переопределением
docker run -e "NODE_ENV=development" -e "DB_HOST=db" myapp:latest
Проверить значение переменной можно командой echo $VAR_NAME или printenv VAR_NAME.