Как установить и перечислить переменные среды в Linux

Установка и перечисление переменных среды

В системах Linux и Unix переменные окружения представляют собой набор динамических именованных значений, хранящихся в системе и используемых приложениями, запускаемыми в оболочках или подоболочках. Проще говоря, переменная окружения — это переменная с именем и связанным с ней значением.

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

В этом руководстве мы объясним, как читать и устанавливать переменные среды и оболочки.

Переменные среды и переменные оболочки

Переменные имеют следующий формат:

 KEY=value KEY="Some other value" KEY=value1:value2
  • Имена переменных чувствительны к регистру. По соглашению, имена переменных окружения должны быть написаны ЗАГЛАВНЫМИ буквами.
  • При присвоении переменной нескольких значений они должны быть разделены символом двоеточия : .
  • Вокруг символа равенства = нет пробела.

Переменные можно разделить на две основные категории: переменные среды и переменные оболочки.

Переменные среды — это переменные, которые доступны во всей системе и наследуются всеми порожденными дочерними процессами и оболочками.

Переменные оболочки — это переменные, которые применяются только к текущему экземпляру оболочки. Каждая оболочка, например, zsh и bash , имеет свой собственный набор внутренних переменных оболочки.

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

  • env – эта команда позволяет запустить другую программу в заданной среде, не изменяя текущую. При использовании без аргумента выводится список текущих переменных среды.
  • printenv – команда печатает все указанные переменные среды.
  • set – эта команда устанавливает или сбрасывает переменные оболочки. При использовании без аргумента выводится список всех переменных, включая переменные окружения и оболочки, а также функции оболочки.
  • unset – команда удаляет переменные оболочки и среды.
  • export – Команда устанавливает переменные среды.

Список переменных среды

Наиболее часто используемая команда для отображения переменных окружения — printenv . Если имя переменной передано в качестве аргумента, отображается только её значение. Если аргумент не указан, printenv выводит список всех переменных окружения, по одной переменной на строку.

Например, чтобы отобразить значение переменной среды HOME , выполните:

 printenv HOME

На выходе будет выведен путь к текущему вошедшему в систему пользователю:

 /home/linuxize

Вы также можете передать команде printenv более одного аргумента:

 printenv LANG PWD
 en_US /home/linuxize

Если запустить команду printenv или env без аргументов, будет выведен список всех переменных среды:

 printenv

Вывод будет выглядеть примерно так:

 LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;... LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=linuxize PWD=/home/linuxize HOME=/home/linuxize SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/linuxize TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=linuxize XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv

Ниже приведены некоторые наиболее распространенные переменные среды:

  • USER — Текущий вошедший в систему пользователь.
  • HOME — домашний каталог текущего пользователя.
  • EDITOR — редактор файлов по умолчанию. Этот редактор будет использоваться при вводе edit в терминале.
  • SHELL — Путь к оболочке текущего пользователя, например bash или zsh.
  • LOGNAME — имя текущего пользователя.
  • PATH — список каталогов, в которых будет выполняться поиск при выполнении команд. При запуске команды система будет выполнять поиск в этих каталогах в указанном порядке и использовать первый найденный исполняемый файл.
  • LANG — Текущие настройки локали.
  • TERM — Текущая эмуляция терминала.
  • MAIL — Место хранения почты текущего пользователя.

Команды printenv и env выводят только переменные окружения. Чтобы получить список всех переменных, включая переменные окружения, оболочки и функции оболочки , можно использовать команду set :

 set
 BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()

Команда выведет на экран большой список всех переменных, поэтому вы, вероятно, захотите передать вывод команде less .

 set | less

Вы также можете использовать команду echo для вывода значения переменной оболочки. Например, чтобы вывести значение переменной BASH_VERSION , выполните:

 echo $BASH_VERSION
 4.4.19(1)-release

Настройка переменных среды

Чтобы лучше проиллюстрировать разницу между переменными оболочки и среды, начнем с настройки переменных оболочки, а затем перейдем к переменным среды.

Чтобы создать новую переменную оболочки с именем MY_VAR и значением Linuxize просто введите:

 MY_VAR='Linuxize'

Проверить, установлена ли переменная, можно с помощью echo $MY_VAR или фильтрации вывода команды set с помощью grep set | grep MY_VAR :

 echo $MY_VAR
 Linuxize

Используйте команду printenv , чтобы проверить, является ли эта переменная переменной среды:

 printenv MY_VAR

Вывод будет пустым, что говорит нам о том, что переменная не является переменной среды.

Вы также можете попробовать вывести переменную в новой оболочке и получите пустой вывод.

 bash -c 'echo $MY_VAR'

Команда export используется для установки переменных среды.

Чтобы создать переменную среды, просто экспортируйте переменную оболочки как переменную среды:

 export MY_VAR

Вы можете проверить это, выполнив:

 printenv MY_VAR
 Linuxize

Если на этот раз вы попытаетесь напечатать переменную в новой оболочке, то имя переменной будет напечатано на вашем терминале:

 bash -c 'echo $MY_VAR'
 Linuxize

Вы также можете задать переменные среды в одной строке:

 export MY_NEW_VAR="My New Var"

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

Постоянные переменные среды

Чтобы сделать переменные окружения постоянными, необходимо определить их в конфигурационных файлах bash. В большинстве дистрибутивов Linux при запуске нового сеанса переменные окружения считываются из следующих файлов:

  • /etc/environment — используйте этот файл для настройки общесистемных переменных окружения. Переменные в этом файле задаются в следующем формате:

     FOO=bar VAR_TEST="Test Var"
  • /etc/profile — переменные, заданные в этом файле, загружаются при каждом входе в оболочку входа bash. При объявлении переменных окружения в этом файле необходимо использовать команду export :

     export JAVA_HOME="/path/to/java/home" export PATH=$PATH:$JAVA_HOME/bin
  • Файлы конфигурации оболочки, специфичные для каждого пользователя. Например, если вы используете Bash, вы можете объявить переменные в файле ~/.bashrc :

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

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

 source ~/.bashrc

Заключение

В этом руководстве мы показали вам, как устанавливать и перечислять переменные среды и оболочки.

Если у вас возникнут какие-либо вопросы, не стесняйтесь оставлять комментарии.

Терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *