Переменные окружения.
Содержание
Введение
Переменные окружения в 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
Как видим, ошибка стала выводиться при некорректной команде на другом языке. Переменные можно устанавливать для текущего сеанса и более простой конструкцией:
$ LANG=3 $ printenv LANG 3
Задача: установить основную строку приглашения в формате "время имя_пользователя символ_приглашения " и пусть строка приглашения будет окрашена в красный цвет (обозначение для красного цвета 0;31). Решение:
$ PS1="\e[0;31m\A \u \$ \e[m"
Заметим, что изменение некоторых переменных окружение можно привести к резкому изменению работы системы. Например, если переменной 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