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

How to Set and List Environment Variables in Linux

25 Мая 2020 | Терминал

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

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

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

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


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

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

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

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

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

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

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

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

Переменные среды списка 

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

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

printenv HOME 

Вывод выведет путь текущего пользователя, вошедшего в систему:

/home/linuxize
 

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

printenv LANG PWD 
en_US
/home/linuxize
 

Если вы запустите команду printenv or 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
 

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

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

Чтобы создать новую переменную оболочки с именем 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 

Вывод

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


    Комментарии

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

Загрузка комментариев...