Переменные окружения в Linux: управление поведением процессов!Переменные окружения (environment variables) задают контекст выполнения программ. Через них настраиваются shell, компиляторы, интерпретаторы, библиотеки и большинство CLI-утилит. Это базовый механизм конфигурации в Unix-подобных системах.
Посмотреть все переменные окружения текущего процесса (shell):
printenv
или:
env
Обе команды выводят окружение текущего процесса (экспортированные переменные).
env также часто используют для запуска команды с заданными переменными.
Посмотреть значение конкретной переменной:
echo "$PATH"
Кавычки важны при подстановке переменных: они предотвращают нежелательное разбиение на слова и обработку спецсимволов (особенно если значение содержит пробелы или символы glob).
Временная переменная для одного запуска программы:
DEBUG=true ./app
Переменная будет доступна только процессу
./app и его дочерним процессам. В текущем shell она не сохранится.
Экспорт переменной в текущей сессии shell:
export NODE_ENV=production
После
export переменная становится частью окружения текущего shell и наследуется всеми дочерними процессами, но не влияет на другие терминалы и будущие входы в систему.
Удаление переменной:
unset NODE_ENV
Удаляет переменную из текущего shell и его окружения.
Постоянные переменные пользователя - задаются в конфигурационных файлах shell и применяются при старте сессии. Для Bash обычно используют:
~/.bashrc — интерактивные shell;
~/.profile или
~/.bash_profile — login-shell
Конкретный файл зависит от способа запуска shell в системе.
Пример:
export EDITOR=vim
export PATH="$HOME/bin:$PATH"
После изменения применить настройки можно:
source ~/.bashrc
или просто открыть новый терминал.
Глобальные переменные для всех пользователей - можно задать в файле:
/etc/environment
Этот файл обычно обрабатывается при входе в систему через PAM. Он поддерживает только простые присваивания без shell-синтаксиса, экспорта и подстановок.
Пример:
JAVA_HOME=/usr/lib/jvm/java-17
Посмотреть окружение конкретного запущенного процесса:
cat /proc/<PID>/environ | tr '\0' '\n'
Переменные хранятся в памяти процесса как строки, разделённые нулевым байтом. Обычно доступно только для своих процессов или с правами root (может ограничиваться настройками безопасности).
Порядок PATH критичен - поиск исполняемых файлов идёт слева направо:
echo "$PATH"
Будет запущена первая найденная программа с совпадающим именем.
🔥 Переменные окружения передаются процессам через механизм fork/exec, существуют только в памяти процесса и наследуются его потомками. Они не изменяют систему глобально сами по себе и являются стандартным способом управления поведением программ в Linux.
🚪
Linux Ready | #практика