Как вывести только одну переменную окружения linux

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • USER — текущий авторизованный пользователь.
  • HOME — домашний каталог текущего пользователя.
  • EDITOR — используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе edit в терминале.
  • SHELL — путь к оболочке текущего пользователя, например bash или zsh.
  • LOGNAME — имя текущего пользователя.
  • PATH — список каталогов, в которых будет производиться поиск при выполнении команд. Когда вы запускаете команду, система будет искать в этих каталогах в указанном порядке и использовать первый найденный исполняемый файл.
  • LANG — текущие настройки локали.
  • TERM — текущая эмуляция терминала.
  • MAIL — Местоположение, где хранится почта текущего пользователя.

Команды printenv и env выводят только переменные среды. Если вы хотите получить список всех переменных, включая среду, оболочку, переменные и функции оболочки, вы можете использовать команду set :

Команда отобразит большой список всех переменных, поэтому вы, вероятно, захотите передать вывод команде less .

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Выводы

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

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

Источник

Переменные окружения в Linux

Обновл. 23 Окт 2021 |

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

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

На этом уроке мы научимся работать с переменными окружения и оболочки.

Переменные окружения и переменные оболочки

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

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

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

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

KEY=значение1
KEY=»Какое-то другое значение»
KEY=значение1:значение2

При этом также следует придерживаться определенных правил:

Имена переменных чувствительны к регистру, поэтому переменные окружения должны иметь имена в верхнем регистре.

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

Вокруг символа = не должно быть пробелов.

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

команда env — позволяет запускать другую программу в пользовательском окружении без изменения в текущем окружении. При использовании без аргумента выведет список переменных текущего окружения;

команда printenv — выводит список всех переменных окружения (или какую-то отдельно заданную переменную);

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

команда unset — удаляет переменные оболочки и переменные окружения;

команда export — создает переменную окружения.

Поиск и вывод переменных окружения

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

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

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

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

$ printenv LANG PWD

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

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

USER — текущий пользователь.

PWD — текущая директория.

OLDPWD — предыдущая рабочая директория. Используется оболочкой для того, чтобы вернуться в предыдущий каталог при выполнении команды cd — .

HOME — домашняя директория текущего пользователя.

SHELL — путь к оболочке текущего пользователя (например, bash или zsh).

EDITOR — заданный по умолчанию редактор. Этот редактор будет вызываться в ответ на команду edit .

LOGNAME — имя пользователя, используемое для входа в систему.

PATH — пути к каталогам, в которых будет производиться поиск вызываемых команд. При выполнении команды система будет проходить по данным каталогам в указанном порядке и выберет первый из них, в котором будет находиться исполняемый файл искомой команды.

LANG — текущие настройки языка и кодировки.

TERM — тип текущего эмулятора терминала.

MAIL — место хранения почты текущего пользователя.

LS_COLORS — задает цвета, используемые для выделения объектов (например, различные типы файлов в выводе команды ls будут выделены разными цветами).

Наиболее распространенные переменные оболочки:

BASHOPTS — список задействованных параметров оболочки, разделенных двоеточием.

BASH_VERSION — версия запущенной оболочки bash.

COLUMNS — количество столбцов, которые используются для отображения выходных данных.

DIRSTACK — стек директорий, к которому можно применять команды pushd и popd .

HISTFILESIZE — максимальное количество строк для файла истории команд.

HISTSIZE — количество строк из файла истории команд, которые можно хранить в памяти.

HOSTNAME — имя текущего хоста.

IFS — внутренний разделитель поля в командной строке (по умолчанию используется пробел).

PS1 — определяет внешний вид строки приглашения ввода новых команд.

PS2 — вторичная строка приглашения.

SHELLOPTS — параметры оболочки, которые можно устанавливать с помощью команды set .

UID — идентификатор текущего пользователя.

Команды printenv и env выводят только переменные окружения. Если вы хотите получить список всех переменных, включая переменные (и функции) оболочки, то можете использовать команду set :

Команда отобразит список всех переменных. Он довольно большой, поэтому я заранее перенаправил вывод в команду more .

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

$ printenv | grep [ИМЯ_ПЕРЕМЕННОЙ]

Ниже представлен пример поиска переменных, в названии которых содержится строка USER :

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

Установка переменных оболочки

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

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

$ set | grep NEW_VAR

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

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

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

$ bash -c ‘echo $NEW_VAR’

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

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

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

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

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

$ bash -c ‘echo $NEW_VAR’

Вы также можете использовать и следующую конструкцию для создания переменной окружения:

$ export MY_NEW_VAR=»My New Var»

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

Как сделать переменные окружения постоянными?

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

Чтобы установить постоянную переменную окружения для текущего пользователя, откройте файл .bashrc:

Для каждой переменной, которую вы хотите сделать постоянной, добавьте в конец файла строку, используя следующий синтаксис:

Сохраните и закройте файл. Изменения будут применены после перезапуска оболочки. Если вы хотите применить изменения во время текущего сеанса, то используйте команду source :

Чтобы задать постоянные переменные окружения для всех пользователей, создайте .sh-файл в каталоге /etc/profile.d:

$ sudo nano /etc/profile.d/[имя_файла].sh

Синтаксис добавления переменных в файл такой же, как и в случае с файлом .bashrc:

Сохраните и закройте файл. Изменения будут применены при следующем входе в систему.

Удаление переменных

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

Заключение

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

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

Существует множество других распространенных сценариев, в которых вам нужно будет прочитать или изменить параметры/данные вашего окружения или оболочки. Теперь вы знаете как это можно сделать.

Источник

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