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

12 set 2022 4 min di lettura
Как установить и перечислить переменные среды в Linux
Indice dei contenuti

Введение

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

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

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

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

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

KEY=valore
 KEY="Questo è un valore"
 KEY=valore1:valore2
  • Имена переменных чувствительны к регистру. По соглашению переменные окружения должны иметь имена в ВЕРХНЕМ РЕГИСТРЕ.
  • При присвоении переменной нескольких значений они должны быть разделены двоеточием :
  • Вокруг символа равенства = нет пробела.

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

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

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

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

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

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

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

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

printenv HOME

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

/home/noviello

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

printenv LANG PWD
C.UTF-8
 /home/noviello

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

printenv

Вывод будет выглядеть следующим образом:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;.....
 HOSTTYPE=x86_64
 LESSCLOSE=/usr/bin/lesspipe %s %s
 LANG=C.UTF-8
 WSL_DISTRO_NAME=Ubuntu-18.04
 USER=noviello
 PWD=/home/noviello
 HOME=/home/noviello
 NAME=DESKTOP-8IISBA0
 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
 SHELL=/bin/bash
 TERM=xterm-256color
 SHLVL=1
 LOGNAME=noviello
 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:........

Вот некоторые из наиболее распространенных переменных среды:

  • 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.20(1)-release

Установка переменных окружения

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

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

MY_VAR='Noviello'

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

echo $MY_VAR
Noviello

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

printenv MY_VAR

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

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

bash -c 'echo $MY_VAR'

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

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

export MY_VAR

Вы можете проверить это, запустив:

printenv MY_VAR
Noviello

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

bash -c 'echo $MY_VAR'
Noviello

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

export MY_NEW_VAR="My New Var"

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

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

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

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

FOO=valore
 VAR_TEST="Valore uno"

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

export JAVA_HOME="/path/to/java/home"
 export PATH=$PATH:$JAVA_HOME/bin

Например, если вы используете Bash, вы можете объявить переменные в файле ~/.bashrc.

Откройте файл:

nano ~/.bashrc

Вставьте следующую строку кода в конец файла:

export TEST_VAR="variabile di prova"

Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.

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

source ~/.bashrc

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

Вывод

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

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.