Переменные окружения: Невидимый центр управления вашей системой

Вы вводите команду ls — и она мгновенно срабатывает. Запускаете интерпретатор Python — и он готов к работе. Но задумывались ли вы, откуда система знает, в каких именно папках искать эти программы? Почему одни настройки сохраняются «навсегда», а другие исчезают сразу после закрытия терминала?

Ответ кроется в переменных окружения (Environment Variables). Это невидимый диспетчер, который управляет поведением оболочки, системных утилит и пользовательских приложений.

Что такое переменные окружения?

По сути, это именованные пары «ключ-значение» (строки), которые хранят настройки текущей сессии. Они определяют, какой язык интерфейса использовать, где хранить временные файлы, какие пути просматривать для поиска исполняемых файлов и многое другое. Любой процесс, запущенный в текущей оболочке, наследует эти переменные.

Как просмотреть список переменных

Чтобы увидеть все доступные переменные окружения, используйте следующие команды:

# Вывести все переменные окружения
env
# или
printenv

Если вам нужно значение конкретной переменной, используйте echo с префиксом $:

echo $PATH
echo $HOME
echo $SHELL

Знак $ — это специальный указатель для оболочки: «возьми значение, хранящееся в этой переменной».

Работа с собственными переменными

1. Временные переменные

Вы можете создать переменную, которая будет существовать только в рамках текущей сессии терминала:

# Локальная переменная (только для текущей оболочки)
MY_VAR="hello"
echo $MY_VAR   # Выведет: hello

2. Экспорт переменных

Если вы хотите, чтобы переменная была доступна дочерним процессам (например, вашим скриптам на bash), ее нужно экспортировать:

export MY_VAR="hello"

Как сделать переменные постоянными

Чтобы настройки не сбрасывались после перезагрузки или закрытия окна терминала, их необходимо прописать в конфигурационные файлы профиля пользователя, такие как ~/.bashrc (для Bash) или ~/.zshrc (для Zsh):

echo 'export EDITOR=nano' >> ~/.bashrc
source ~/.bashrc

После выполнения команды source изменения вступят в силу немедленно, и переменная EDITOR будет автоматически устанавливаться при каждом запуске терминала.

Удаление переменных

Если переменная больше не нужна, используйте команду unset:

unset MY_VAR

Ключевая переменная: PATH

Одной из самых важных переменных является PATH. В ней через двоеточие перечислены пути к директориям, где система ищет программы.

Если вы хотите запускать свои скрипты из папки ~/bin/ просто по их имени, добавьте этот путь в PATH:

export PATH="$HOME/bin:$PATH"

Совет по безопасности: Рекомендуется добавлять свои пути в начало списка ($HOME/bin:$PATH), чтобы ваши версии команд имели приоритет. Однако никогда не добавляйте в PATH текущую директорию (точку .) — это серьезная дыра в безопасности, которой могут воспользоваться злоумышленники.

Применение в Docker и DevOps

В современной разработке и администрировании переменные окружения являются стандартом для передачи конфигураций в контейнеры.

Запуск через CLI:

docker run -e MY_VAR=value -e ANOTHER_VAR=another my_image

Пример использования в docker-compose.yml:

environment:
  - MY_VAR=value
  - ANOTHER_VAR=another

Это позволяет разделять код и настройки, делая инфраструктуру более гибкой и безопасной.