Как установить и перечислить переменные среды в 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=barVAR_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
Выводы
В этом руководстве мы показали вам, как устанавливать и перечислять переменные среды и оболочки.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.