Установка и управление переменными окружения в 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
- путь к текущему shellLANG
- локаль системыPWD
- текущая рабочая директорияHOSTNAME
- имя хостаTERM
- тип терминала
Полезные команды для работы с ENV
bash
# Просмотр всех переменных окружения
env
# Просмотр конкретной переменной
echo $VARIABLE_NAME
# Удаление переменной
unset VARIABLE_NAME
# Временная установка только для одной команды
TEMP_VAR="value" command
Особенности и рекомендации
Безопасность:
- Не храните секретные данные в публичных файлах
- Используйте файлы
.env
для проектов - Установите правильные права доступа:
chmod 600 .env
Порядок загрузки:
/etc/environment -> /etc/profile -> ~/.profile -> ~/.bashrc (для bash) -> ~/.zshrc (для zsh)
Работа с Docker:
bash# Передача переменных в контейнер docker run -e VARIABLE_NAME=value ... # Использование env-file docker run --env-file .env ...
Проверка существования переменной:
bash
if [ -z "${VARIABLE_NAME}" ]; then
echo "Переменная не установлена"
fi
- Использование в скриптах:
bash
#!/bin/bash
# Установка значения по умолчанию
: "${API_URL:=http://localhost:3000}"
echo $API_URL
Рекомендуемые практики для разработки
- Используйте
.env.example
как шаблон необходимых переменных - Документируйте все переменные окружения в README проекта
- Используйте префиксы для группировки переменных (например,
DB_*
,API_*
) - Применяйте валидацию переменных при старте приложения
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
}