Переменные окружения.
Переменные окружения в Linux — это специальные переменные, определенные оболочкой и используемые программами во время выполнения. Они могут определяться системой и пользователем. Системные переменные окружения Linux определяются системой и используются программами системного уровня. Например, команда PWD использует системную переменную, чтобы сохранять прежнюю рабочую директорию. Пользовательские переменные окружения устанавливаются пользователем, для текущей оболочки, временно или постоянно.
Вывести список всех переменных окружения и оболочки
Чтобы вывести список действующих переменных окружения можно использовать команды env, printenv, export -p:
$ env SHELL=/bin/bash PWD=/home/b06906/10 LOGNAME=b0690610 XDG_SESSION_TYPE=tty HOME=/home/b06906/10 . LANG=ru_RU.UTF-8 TERM=xterm-256color USER=b0690610 PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games MAIL=/var/mail/b0690610 SSH_TTY=/dev/pts/1 _=/usr/bin/eно
Приведён сокращённый вывод. Обычно он значительно больше. Чтобы вывести значение конкретной переменной можно использовать следующие команды:
$ printenv LANG ru_RU.UTF-8 $ echo $LANG ru_RU.UTF-8
Видим, что значению переменной LANG соответствует значение ru_RU.UTF-8, а значит языком системы является русский язык.
Набор переменных окружения в Linux
- USER: текущее имя пользователя, использующего систему
- EDITOR: какая программа запускается для редактирования файла на вашем хосте
- HOME: домашний каталог текущего пользователя
- PATH: список каталогов, разделенных двоеточиями, в которых система ищет команды
- PS1: основная строка приглашения (для определения отображения приглашения оболочки)
- PWD: текущий рабочий каталог
- _: самая последняя команда, выполненная в системе пользователем
- MAIL: путь к почтовому ящику текущего пользователя
- SHELL: оболочка, используемая для интерпретации команд в системе (например, bash, sh, zsh или другие)
- LANG: кодировка языка, используемая в системе
- UID: текущий UID для пользователя
- HOSTNAME: имя компьютера системы
- TERM: указывает тип терминала
- COLUMNS: Количество столбцов в ширину, которые используются для вывода вывода на экран.
Установка переменных окружения в Linux
Устанавливать новые переменные окружения и изменять существующие переменные можно с помощью утилиты export. Например, изменим язык системы с действующего русского на английский:
$ re -bash: re: команда не найдена $ export LANG=en_US.UTF-8 $ re -bash: re: command not found
Как видим, ошибка стала выводиться при некорректной команде на другом языке. Переменные можно устанавливать для текущего сеанса и более простой конструкцией:
Задача: установить основную строку приглашения в формате «время имя_пользователя символ_приглашения » и пусть строка приглашения будет окрашена в красный цвет (обозначение для красного цвета 0;31). Решение:
Заметим, что изменение некоторых переменных окружение можно привести к резкому изменению работы системы. Например, если переменной PATH присвоить пустое значение, то ни одна команда не будет работать:
$ PATH= $ ls -bash: ls: Нет такого файла или каталога
Исправить это можно либо присвоив переменной прежнее значение, либо перезагрузим систему. Также установим новую переменную окружения NEW_VARIABLE:
$ export NEW_VARIABLE='test' $ printenv NEW_VARIABLE test
Используя export, наша переменная окружения будет установлена для текущего сеанса оболочки. Как следствие, если мы откроем другую оболочку или перезапустим свою систему, переменная окружения больше не будет доступна. Также переменные окружения возможно сбрасывать с помощью команды unset:
$ unset NEW_VARIABLE $ printenv NEW_VARIABLE $
Чтобы установить постоянные переменные окружения, которые не будут аннулироваться после каждого сеанса, нужно добавить их в файл .bashrc, как в следующем примере:
$ export TZ="America/New_York" $ source ~/.bash_profile
Сайт построен с использованием Pelican. За основу оформления взята тема от Smashing Magazine. Исходные тексты программ, приведённые на этом сайте, распространяются под лицензией GPLv3, все остальные материалы сайта распространяются под лицензией CC-BY.
Как вывести значения всех переменных и переменных окружения в Linux
Как перечислить все имена переменных и их текущие значения? Как показать только переменные окружения? Ответу на эти вопросы посвящена данная статья.
Можно вывести значения переменных по одной, например:
echo $HOME echo $PWD echo $USER echo $SHELL
Если вам нужен полный список, то продолжайте читать.
printenv
Для bash: (стандартная оболочка во многих дистрибутивах Linux)
Введите следующую команду в терминале, чтобы распечатать все переменные среды:
Для получения дополнительной информации об этой команде прочтите справочную страницу:
Чтобы отобразить список, включающий «переменные оболочки», вы можете ввести следующую команду:
Это покажет вам не только переменные оболочки, но и переменные среды.
Для zsh: (оболочка по умолчанию используется в Kali Linux)
Используйте следующую команду:
( setopt posixbuiltin; set; ) | less
Для получения дополнительной информации о параметрах ZSH смотрите справочную страницу
declare
Вы можете увидеть все переменные с помощью встроенной команды declare.
Если вас интересуют только переменные среды, используйте
Запустите «help declare», чтобы увидеть, какие есть другие опции.
Переменные среды, доступные для запуска приложения
Во всех описанных выше методах предлагается следующая процедура:
- запустить терминал
- показать переменные среды, используя env, printenv или что-то ещё
Проблема этих решений заключается в том, что вы видите переменные среды оболочки, запущенной в терминал. Вы не видите переменных среды, доступных для запуска приложения, например, непосредственно в графическом интерфейсе.
Это заметно, если, например, вы используете свой ~/.profile, или .bashrc, или .zshenv (в зависимости от вашей оболочки) для изменения переменных среды — как классическое добавление каталогов к PATH.
Чтобы увидеть переменные среды, доступные для приложения, запущенного непосредственно в графической среде, вы можете сделать следующее (в Gnome Shell, я уверен, что есть эквивалентный метод во всех других DE):
xterm -e bash --noprofile --norc
Или, если у вас нет xterm, то запустите:
gnome-terminal - bash --noprofile --norc
Теперь у вас есть терминал с оболочкой, которая не добавляла никаких переменных среды. Вы можете использовать env здесь, чтобы перечислить все свои переменные среды:
Очевидно, что новая оболочка будет иметь переменные среды, добавленные системными файлами, но эти переменные должны быть доступны (по наследству) для всех программ в системе в любом случае.