Получить переменные среды linux

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 :

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 .

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

Читайте также:  Linux информация о домене

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

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

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

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

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

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

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

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

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

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

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

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

export MY_NEW_VAR="My New Var"

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

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

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

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

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

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

Выводы

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

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

Источник

Как вывести значения всех переменных и переменных окружения в Linux

Как перечислить все имена переменных и их текущие значения? Как показать только переменные окружения? Ответу на эти вопросы посвящена данная статья.

Можно вывести значения переменных по одной, например:

echo $HOME echo $PWD echo $USER echo $SHELL

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

Читайте также:  Изменить репозиторий astra linux

printenv

Для bash: (стандартная оболочка во многих дистрибутивах Linux)

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

Для получения дополнительной информации об этой команде прочтите справочную страницу:

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

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

Для zsh: (оболочка по умолчанию используется в Kali Linux)

Используйте следующую команду:

( setopt posixbuiltin; set; ) | less

Для получения дополнительной информации о параметрах ZSH смотрите справочную страницу

declare

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

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

Запустите «help declare», чтобы увидеть, какие есть другие опции.

Переменные среды, доступные для запуска приложения

Во всех описанных выше методах предлагается следующая процедура:

  • запустить терминал
  • показать переменные среды, используя env, printenv или что-то ещё

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

Это заметно, если, например, вы используете свой ~/.profile, или .bashrc, или .zshenv (в зависимости от вашей оболочки) для изменения переменных среды — как классическое добавление каталогов к PATH.

Чтобы увидеть переменные среды, доступные для приложения, запущенного непосредственно в графической среде, вы можете сделать следующее (в Gnome Shell, я уверен, что есть эквивалентный метод во всех других DE):

xterm -e bash --noprofile --norc

Или, если у вас нет xterm, то запустите:

gnome-terminal - bash --noprofile --norc

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

Очевидно, что новая оболочка будет иметь переменные среды, добавленные системными файлами, но эти переменные должны быть доступны (по наследству) для всех программ в системе в любом случае.

Связанные статьи:

Источник

Оцените статью
Adblock
detector