Переменные окружения.

Введение

Переменные окружения в 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