Linux вывод всех переменных

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

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

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

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

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

Обычно, переменные имеют такой формат:

KEY=value KEY="Some other value" KEY=value1:value2

Несколько основных правил для работы с переменными:

  • Имена переменных чувствительны к регистру. Все переменные среды должны называться С ЗАГЛАВНОЙ БУКВЫ.
  • Чтобы назначить несколько значений для одной переменной используйте знак «двоеточия» в качестве разделителя.
  • Символ «=» не должны окружать пробелы.

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

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

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

  • env — Эта команда позволяет запускать другую программу в пользовательской среде без изменения текущей. Если использовать её без дополнительных аргументов, она выведет список текущих переменных среды.
  • printenv — Команда выведет на экран все или часть переменных.
  • set — Команда устанавливает или отменяет переменные оболочки. Если её использовать без аргумента, тогда она выведет список всех переменных, включая переменные окружения и оболочки, а также некоторые функции оболочки.
  • unset — Удаляет переменные оболочки и среды.
  • export — Устанавливает переменные среды.
Читайте также:  Linux iptables диапазон портов

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

Наиболее часто используемая команда для отображения переменных среды — 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 выполните:

Читайте также:  Openbsd мы linux server

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

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

Создадим новую переменную оболочки с именем MY_VAR и значением Abuzov, для этого введём:

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

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

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

Команда export используется для установки переменных окружения. Чтобы создать переменную, просто экспортируйте переменную оболочки как переменную среды:

Теперь выполнение команды printenv MY_VAR выведет на экран значение Abuzov. Дополнительно, можно устанавливать переменные среды командой в одну строку:

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

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

Читайте также:  Linux посмотреть версию jdk

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