для чего нужны переменные окружения в bash

Переменные окружения в 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. Значение каждой переменной окружения представляет собой, как можно видеть, набор параметров, разделённых двоеточиями.

Для вывода значения конкретной переменной:

В последнем случае будет выведены все переменные, содержащие фразу «PATH».

Виды переменных окружения

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

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

ИмяОписание
HOMEОпределяет путь к домашнему каталогу текущего пользователя
PWDОпределяет текущий активный каталог
OLDPWDПредыдущий активный каталог
SHELLОпределяет программу-командную оболочку
TERMСодержит имя текущей запущенной программы-терминала
PAGERОпределяет программу для постраничного вывода страниц справочных руководств
EDITORОпределяет программу для редактирования текстовых файлов
VISUALОпределяет программу для редактирования текстовых файлов с расширенными возможностями (vim, emacs)
MAILОпределяет путь к каталогу, в котором должны храниться файлы входящей электронной почты.
BROWSERОпределяет веб-браузер, запускаемый по-умолчанию
ftp_proxy

http_proxy

Определяют, соответственно адреса для прокси-серверов по FTP и HTTP протоколам
MANPATHОпределяет каталог, в котором содержатся подкаталоги, содержащие man-страницы справочных руководств системной справки для команды man
INFODIRОпределяет список каталогов для поиска info-страниц для команды info
TZОпределяет временную зону. Доступные временные зоны хранятся в /usr/share/zoneinfo

Системные переменные

Согласно стандартам Linux переменные окружения для организации системной среды хранятся в нескольких файлах:

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

Пользовательские переменные

Для систем, ориентированных на многопользовательский доступ, например на хостинговых площадках, конкретному пользователю полезно иметь возможность гибко настраивать своё собственное рабочее окружение, создавая новые переменные или дополняя их новыми значениями. К примеру, владельцу сайта, для его виртуального хоста, обслуживающего сайт на 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.

Источник

ИТ База знаний

Полезно

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Переменные окружения в Linux: как посмотреть, установить и сбросить

Работа с переменными

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

для чего нужны переменные окружения в bash

для чего нужны переменные окружения в bash

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

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

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

Должны соблюдаться следующие правила:

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

Про Linux за 5 минут

Вывести список всех переменных окружения и оболочки

А как посмотреть переменные оболочки?

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

Общий набор переменных окружения в Linux

Посмотрим на общий набор переменных окружения, которые вы можете найти в своей системе.

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

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

Для примера создаим новую переменную, а затем экспортируем ее.

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

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

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

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

Вы можете вывести новую переменную окружения с помощью printenv и посмотреть, дату в Linux, изменив TZ.

Отлично, ваши изменения теперь сохраняются после перезагрузки оболочки или системы!

Использование etc/environment

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

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

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

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

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

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

Использование команды unset

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

Установить переменную окружения PATH в Linux

Успех! Вы успешно обновили переменную окружения PATH в Linux.

Заключение

Источник

Что такое переменные среды Bash

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

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

Основы переменных среды Bash

Этот раздел содержит основную информацию и операции, связанные с переменными среды, а также то, как вы можете играть с этими переменными:

Как распечатать существующие переменные среды

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

для чего нужны переменные окружения в bash

для чего нужны переменные окружения в bash

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

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

для чего нужны переменные окружения в bash

» Printenv » и » окр команда» напечатали переменные окружения, которые используются для отображения конкретной информации, относящейся к системе; мы перечислили наиболее часто используемые переменные среды:

VariableDescription
USER:User that is currently logged in
SHELL:Path of the user’s shell
EDITOR:It will display the name of default file editor
LOGNAME:This env variable will print the name of current user
UID:The unique identifier of a user
HOSTNAME:The hostname of the user’s device over the network
TEMP:The directory location of temporary files
PWD:The current operational directory of the terminal
LANG:This env variable will show the current language settings
TERM:The current terminal emulation

Как объявить переменную окружения

В более ранней части этого письма мы обсуждали типы переменных в Linux: оболочка и окружение. Мы не должны смешивать обе переменные; и наблюдается, что объявление переменной окружения — сложный процесс, и конфликт может произойти с переменными оболочки / локальными переменными:

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

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

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

Шаг 1: Экспорт переменной оболочки : Чтобы объявить переменные среды, вы должны открыть файл «.bashrc » с помощью редактора nano (или вы можете использовать любой другой редактор) с помощью следующей команды:

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

для чего нужны переменные окружения в bash

Шаг 2: Загрузите файл

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

Как объявить переменные среды навсегда для всех пользователей

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

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

После внесения изменений нажмите » Ctrl + S «, чтобы сохранить файл, а также перезагрузите файл в систему:

Как установить общесистемную переменную среды

Чтобы установить переменную среды, доступную для всей системы, вы должны получить доступ к файлу » / etc / environment » и получить разрешение на редактирование (с помощью редактора nano) файла и написать следующий синтаксис в нижнем конце файла:

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

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

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

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

Заключение

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

для чего нужны переменные окружения в bash

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

для чего нужны переменные окружения в bash

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

для чего нужны переменные окружения в bash

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

для чего нужны переменные окружения в bash

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

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

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

для чего нужны переменные окружения в bash

для чего нужны переменные окружения в bash

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

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

для чего нужны переменные окружения в bash

для чего нужны переменные окружения в bash

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

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

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

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

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

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

для чего нужны переменные окружения в bash

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

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

$ export MY_NEW_VAR=»My New Var»

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

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

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

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

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

для чего нужны переменные окружения в bash

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

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

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

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

для чего нужны переменные окружения в bash

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

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

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

для чего нужны переменные окружения в bash

Заключение

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

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

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

Источник


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *