- Переменные окружения в Linux
- Зачем нужны переменные окружения?
- Получение информации о переменных окружения
- Виды переменных окружения
- Системные переменные
- Пользовательские переменные
- Временные или переменные сеанса
- Установка переменных окружения
- Как установить и перечислить переменные среды в Linux
- How to Set and List Environment Variables in Linux
- В этом руководстве мы объясним, как читать и устанавливать переменные окружения и оболочки.
- Переменные среды и переменные оболочки
- Переменные среды списка
- Установка переменных среды
- Постоянные переменные среды
- Вывод
Переменные окружения в Linux
В системах Linux для хранения и использования некоторых настроек и параметров используются специализированные контейнеры данных — переменные окружения. Они представляют собой именованные переменные, в которых хранится текстовое значение. В качестве значения могут использоваться пути, имена команд, файлов и. т. д. Переменные окружения можно редактировать, т. е. изменять их значения, удалять или создавать новые. Переменными окружения пользуются как система, так и программы, скрипты или демоны для своей работы.
Зачем нужны переменные окружения?
Если коротко, то они необходимы для организации различного рода окружений: системных, пользовательских, сеансовых, т. е. для хранения настроек соответствующих сред внутри системы. К примеру, программы для своей работы используют библиотечные функции, являющиеся одним из важнейших системных ресурсов. Или, например, интерпретатор команд способен находить соответствующие командам исполняемые файлы без необходимости каждый раз указывать соответствующие пути.
Но как программы «узнают», где можно найти те или иные ресурсы? Из переменных окружения. Таким же образом происходит запуск и исполнение команд в командной консоли, т. к. благодаря переменной окружения PATH интерпретатор bash (или любая другая командная оболочка) находит программу (исполняемый файл или библиотеку) по указанному в PATH пути. И таким же образом, к примеру, команда man «знает», что запрашиваемые страницы справочных руководств нужно искать согласно значению переменной окружения MANPATH.
Получение информации о переменных окружения
В работе, тесно связанной с системным администрированием довольно часто приходится сталкиваться с такими ситуациями, когда необходимо узнать значения некоторых переменных окружения или же вывести список полный список таковых. Для этой цели существует несколько специализированных утилит. В подавляющем большинстве случаев соответствующие пакеты уже предустановлены в системе. Самыми распространёнными из таких утилит являются printenv, env, а также export. Так, например, для того, чтобы вывести список действующих переменных окружения нужно дать следующую команду:
В данном выводе представлен сильно сокращённый список переменных окружения для Kubuntu 18.04. Также следует заметить, что представленный список относится к пользовательскому набору, доступному текущему пользователю. Если выполнить команду printenv от имени суперпользователя (root), то набор переменных будет несколько отличаться.
Как следует из вышеприведённого вывода, для пользователя john используется русская локализация для сеанса (LANG), в качестве командного интерпретатора по-умолчанию используется bash (SHELL), текущим активным каталогом является /home/john (PWD), а переменная PATH модифицирована и содержит в себе (кроме дефолтного /usr/bin) значения /opt/wxwidgets/bin и /home/john/.config/composer/vendor/bin. Значение каждой переменной окружения представляет собой, как можно видеть, набор параметров, разделённых двоеточиями.
Тот же список можно вывести, если дать команду env. Также можно использовать команду export с ключом -p:
Для вывода значения конкретной переменной:
В последнем случае будет выведены все переменные, содержащие фразу «PATH».
Виды переменных окружения
Как уже отмечалось, в системе существуют, образно выражаясь, различные рабочие среды для разных уровней доступа и продолжительности действия переменных. Для организации работы пользователей действует пользовательская среда (окружение), для корректного функционирования компонентов системы — системное окружение, доступное только суперпользователю. В процессе работы также можно устанавливать временные переменные окружения, доступные текущему пользователю и только на время действия текущего сеанса.
Ниже приведены некоторые наиболее часто используемые переменные окружения:
Имя | Описание |
HOME | Определяет путь к домашнему каталогу текущего пользователя |
PWD | Определяет текущий активный каталог |
OLDPWD | Предыдущий активный каталог |
SHELL | Определяет программу-командную оболочку |
TERM | Содержит имя текущей запущенной программы-терминала |
PAGER | Определяет программу для постраничного вывода страниц справочных руководств |
EDITOR | Определяет программу для редактирования текстовых файлов |
VISUAL | Определяет программу для редактирования текстовых файлов с расширенными возможностями (vim, emacs) |
Определяет путь к каталогу, в котором должны храниться файлы входящей электронной почты. | |
BROWSER | Определяет веб-браузер, запускаемый по-умолчанию |
ftp_proxy http_proxy | Определяют, соответственно адреса для прокси-серверов по FTP и HTTP протоколам |
MANPATH | Определяет каталог, в котором содержатся подкаталоги, содержащие man-страницы справочных руководств системной справки для команды man |
INFODIR | Определяет список каталогов для поиска info-страниц для команды info |
TZ | Определяет временную зону. Доступные временные зоны хранятся в /usr/share/zoneinfo |
Системные переменные
Согласно стандартам Linux переменные окружения для организации системной среды хранятся в нескольких файлах:
- /etc/bash.bashrc – хранение переменных для командных оболочек;
- /etc/profile – хранение переменных для интерактивных оболочек;
- /etc/environment – переменные из этого файла используются модулем
Конечно, подобное разделение для хранения переменных окружения сделано разработчиками не просто так и эти стандарты необходимо соблюдать, чтобы не замусорить систему бесполезной конфигурацией, вносящей путаницу, т. е. нужно внимательно выбирать нужный файл в зависимости от конкретной задачи и ситуации.
Пользовательские переменные
Для систем, ориентированных на многопользовательский доступ, например на хостинговых площадках, конкретному пользователю полезно иметь возможность гибко настраивать своё собственное рабочее окружение, создавая новые переменные или дополняя их новыми значениями. К примеру, владельцу сайта, для его виртуального хоста, обслуживающего сайт на CMS Drupal, захотелось установить утилиту drush, которая облегчает и ускоряет обслуживание CMS. В этом случае достаточно после локальной установки (в каком-нибудь подкаталоге домашнего каталога) drush, дополнить переменную PATH значением, содержащим путь к утилите drush в файле
/.bashrc. В результате командная оболочка сможет запускать команду drush для данного пользователя.
По стандартам соглашений для Linux-систем конфигурация для пользовательского окружения должна храниться в следующих файлах:
/.bashrc – для хранения параметров инициализации выбранной командной оболочки для пользователя;
/.profile – для инициализации доступных пользователю командных оболочек;
/.pam_environment – для использования модулем
Временные или переменные сеанса
Переменные окружения также можно устанавливать временно. Это значит, что переменная будет действовать только во время действия текущего сеанса пользователя. В таких случаях удобно иметь определённый скрипт, содержащий код с необходимыми переменными, который можно в любое время запускать командой:
Или же устанавливать их вручную командой export.
Установка переменных окружения
Чтобы установить временную (для сеанса) переменную окружения достаточно выполнить команду со следующим синтаксисом:
Если нужно временно модифицировать переменную PATH, то можно выполнить export:
Для того, чтобы удалить временную переменную можно воспользоваться командой unset:
Для установки системных или пользовательских переменных окружения следует помещать код с нужными переменными в соответствующие файлы инициализации окружения. Например, чтобы добавить на системном уровне какой-либо пользовательский каталог (пусть это будет
/bin), нужно один из файлов (/etc/profile или /etc/bash.bashrc) дополнить следующим кодом:
В случае, если нужно выполнить то же самое для пользовательского уровня переменных окружения, то редактировать нужно файл (для локального входа)
/.bashrc (для удалённого входа, например по SSH –
Этот код включит использование командным интерпретатором вышеупомянутой команды drush (предварительно установленной по указанному пути, конечно) для CMS Drupal.
Чтобы можно было видеть сделанные изменения, нужно их зафиксировать:
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Как установить и перечислить переменные среды в Linux
How to Set and List Environment Variables in Linux
В этом руководстве мы объясним, как читать и устанавливать переменные окружения и оболочки.
В системах на основе Linux и Unix переменные среды представляют собой набор динамических именованных значений, которые хранятся в системе и используются приложениями, запускаемыми в оболочках или подоболочках. Проще говоря, переменная окружения — это переменная с именем и связанным значением.
Переменные среды позволяют настроить работу системы и поведение приложений в системе. Например, переменная окружения может хранить информацию о текстовом редакторе или браузере по умолчанию , пути к исполняемым файлам или настройке локали системы и раскладки клавиатуры.
Переменные среды и переменные оболочки
Переменные имеют следующий формат:
- Имена переменных чувствительны к регистру. По соглашению переменные среды должны иметь имена UPPER CASE.
- При назначении нескольких значений переменной они должны быть разделены : символом двоеточия .
- Вокруг = символа равенства нет места .
Переменные можно классифицировать на две основные категории: переменные среды и переменные оболочки.
Переменные среды — это переменные, которые доступны для всей системы и наследуются всеми порожденными дочерними процессами и оболочками.
Переменные оболочки — это переменные, которые применяются только к текущему экземпляру оболочки. Каждая оболочка, такая как zsh и bash , имеет свой собственный набор внутренних переменных оболочки.
Есть несколько доступных команд, которые позволяют вам перечислять и устанавливать переменные среды в Linux:
- env — Команда позволяет запускать другую программу в пользовательской среде без изменения текущей. При использовании без аргумента он напечатает список текущих переменных среды.
- printenv — Команда печатает все или указанные переменные среды.
- set — Команда устанавливает или отменяет переменные оболочки. При использовании без аргумента он напечатает список всех переменных, включая переменные окружения и оболочки, а также функции оболочки.
- unset — Команда удаляет переменные оболочки и среды.
- export — Команда устанавливает переменные среды.
Переменные среды списка
Наиболее используемой командой для отображения переменных среды является printenv . Если имя переменной передается в качестве аргумента команды, отображается только значение этой переменной. Если аргумент не указан, printenv печатается список всех переменных среды, по одной переменной на строку.
Например, чтобы отобразить значение HOME переменной среды, вы должны выполнить:
Вывод выведет путь текущего пользователя, вошедшего в систему:
Вы также можете передать в printenv команду более одного аргумента:
Если вы запустите команду printenv or env без аргументов, она покажет список всех переменных среды:
Вывод будет выглядеть примерно так:
Ниже приведены некоторые из наиболее распространенных переменных среды:
- USER — текущий вошедший в систему пользователь.
- HOME — Домашний каталог текущего пользователя.
- EDITOR — Используемый по умолчанию редактор файлов. Это редактор, который будет использоваться при вводе edit в вашем терминале.
- SHELL — Путь к оболочке текущего пользователя, например, bash или zsh.
- LOGNAME — имя текущего пользователя.
- PATH — Список каталогов для поиска при выполнении команд. Когда вы запускаете команду, система будет искать эти каталоги в указанном порядке и использовать первый найденный исполняемый файл.
- LANG — текущие настройки локалей.
- TERM — Текущая эмуляция терминала.
- MAIL — Место хранения почты текущего пользователя.
printenv И env команды печатают только переменные окружения. Если вы хотите получить список всех переменных, включая окружение, оболочку и переменные, а также функции оболочки, вы можете использовать set команду:
Вы также можете использовать команду echo для печати переменной оболочки. Например, чтобы напечатать значение BASH_VERSION переменной, которую вы запустите:
Установка переменных среды
Чтобы лучше проиллюстрировать разницу между переменными Shell и Environment, мы начнем с установки переменных Shell, а затем перейдем к переменным Environment.
Чтобы создать новую переменную оболочки с именем MY_VAR и значением, Linuxize просто введите:
Вы можете проверить, что переменная установлена, используя любой echo $MY_VAR из фильтров вывода команды set с помощью grep set | grep MY_VAR :
Используйте printenv команду, чтобы проверить, является ли эта переменная переменной среды:
Вывод будет пустым, что говорит о том, что переменная не является переменной окружения.
Вы также можете попробовать напечатать переменную в под-оболочке, и вы получите пустой вывод.
Команда export используется для установки переменных окружения.
Чтобы создать переменную среды, просто экспортируйте переменную оболочки как переменную среды:
Вы можете проверить это, запустив:
Если вы попытаетесь напечатать переменную в подоболочке на этот раз, вы получите имя переменной, напечатанное на вашем терминале:
Вы также можете установить переменные среды в одну строку:
Переменные среды, созданные таким образом, доступны только в текущем сеансе. Если вы откроете новую оболочку или выйдете из системы, все переменные будут потеряны.
Постоянные переменные среды
Чтобы сделать переменные окружения постоянными, вам нужно определить эти переменные в файлах конфигурации bash. В большинстве дистрибутивов Linux при запуске нового сеанса переменные среды считываются из следующих файлов:
/etc/environment — Используйте этот файл для настройки общесистемных переменных среды. Переменные в этом файле задаются в следующем формате:
/etc/profile — Переменные, установленные в этом файле, загружаются при каждом входе в оболочку bash. При объявлении переменных окружения в этом файле вам нужно использовать export команду:
Конфигурационные файлы для конкретных пользовательских оболочек. Например, если вы используете Bash, вы можете объявить переменные в
Чтобы загрузить новые переменные среды в текущий сеанс оболочки, используйте source команду:
Вывод
В этом руководстве мы показали, как устанавливать и перечислять переменные среды и оболочки.
Источник