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