Skip to content

Установка и управление переменными окружения в Linux

Основные способы установки ENV переменных

1. Временная установка

bash
export MY_VARIABLE="значение"

Действует только в текущей сессии терминала.

2. Постоянная установка

Можно добавить в следующие файлы:

  • ~/.bashrc - для текущего пользователя (bash)
  • ~/.zshrc - для текущего пользователя (zsh)
  • /etc/environment - системные переменные для всех пользователей
  • /etc/profile - глобальные настройки для всех пользователей
  • ~/.profile - пользовательские настройки
bash
# Пример добавления в ~/.bashrc
export DATABASE_URL="postgresql://user:password@localhost:5432/dbname"
export API_KEY="your-secret-key"

Важные системные переменные по умолчанию

  • PATH - пути поиска исполняемых файлов
  • HOME - домашняя директория пользователя
  • USER - имя текущего пользователя
  • SHELL - путь к текущему shell
  • LANG - локаль системы
  • PWD - текущая рабочая директория
  • HOSTNAME - имя хоста
  • TERM - тип терминала

Полезные команды для работы с ENV

bash
# Просмотр всех переменных окружения
env

# Просмотр конкретной переменной
echo $VARIABLE_NAME

# Удаление переменной
unset VARIABLE_NAME

# Временная установка только для одной команды
TEMP_VAR="value" command

Особенности и рекомендации

  1. Безопасность:

    • Не храните секретные данные в публичных файлах
    • Используйте файлы .env для проектов
    • Установите правильные права доступа: chmod 600 .env
  2. Порядок загрузки:

    /etc/environment
    -> /etc/profile
    -> ~/.profile
    -> ~/.bashrc (для bash)
    -> ~/.zshrc (для zsh)
  3. Работа с Docker:

    bash
    # Передача переменных в контейнер
    docker run -e VARIABLE_NAME=value ...
    
    # Использование env-file
    docker run --env-file .env ...
  4. Проверка существования переменной:

bash
if [ -z "${VARIABLE_NAME}" ]; then
    echo "Переменная не установлена"
fi
  1. Использование в скриптах:
bash
#!/bin/bash
# Установка значения по умолчанию
: "${API_URL:=http://localhost:3000}"
echo $API_URL

Рекомендуемые практики для разработки

  1. Используйте .env.example как шаблон необходимых переменных
  2. Документируйте все переменные окружения в README проекта
  3. Используйте префиксы для группировки переменных (например, DB_*, API_*)
  4. Применяйте валидацию переменных при старте приложения
typescript
import { z } from 'zod'

const envSchema = z.object({
  NODE_ENV: z.enum(['development', 'production', 'test']),
  DATABASE_URL: z.string().url(),
  API_KEY: z.string().min(1),
})

export const validateEnv = () => {
  const parsed = envSchema.safeParse(process.env)

  if (!parsed.success) {
    console.error('❌ Invalid environment variables:', parsed.error.toString())
    process.exit(1)
  }

  return parsed.data
}