Установка и управление переменными окружения в 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
}