См. переменные среды Linux

Обновлено: 21.11.2024

Переменные среды или ENV в основном определяют поведение среды. Они могут повлиять на текущие процессы или программы, выполняемые в среде.

Область действия переменной среды

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

Глобальный

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

Местный

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

Как получить доступ к ENV?

СИНТАКСИС:

ПРИМЕЧАНИЕ. Доступ к локальным и глобальным переменным среды осуществляется одинаково.

Как отображать ENV?

Чтобы отобразить любую ENV

СИНТАКСИС:

Чтобы отобразить все ENV Linux

СИНТАКСИС:

ПРИМЕР:

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

Чтобы установить глобальный ENV

ПРИМЕР:

Чтобы установить локальный ENV

СИНТАКСИС:

ПРИМЕР:

Чтобы установить ENV на уровне пользователя

Эти переменные устанавливаются и настраиваются в файлах ~/.bashrc, ~/.bash_profile, ~/.bash_login, ~/.profile
в соответствии с требованиями. Доступ к этим переменным может получить определенный пользователь, и они сохраняются при отключении питания.

Для этого можно выполнить следующие шаги:
Шаг 1: Откройте терминал.
Шаг 2:

Шаг 3. Введите пароль.
Шаг 4. Добавьте переменную в открытый файл.

Шаг 5. Сохраните и закройте файл.
Шаг 6:

ПРИМЕР:

Чтобы установить общесистемные ENV

Эти переменные устанавливаются и настраиваются в файлах /etc/environment, /etc/profile, /etc/profile.d/, /etc/bash.bashrc в соответствии с требованиями. Доступ к этим переменным может получить любой пользователь, и они сохраняются. через отключения питания.

Для этого можно выполнить следующие шаги:
Шаг 1: Откройте терминал.
Шаг 2:

Шаг 3. Введите пароль.
Шаг 4. Добавьте переменную в открытый файл.

Шаг 5. Сохраните и закройте файл.
Шаг 6. Выйдите из системы и войдите снова.

Как сбросить переменные среды?

СИНТАКСИС:

ПРИМЕР:

ПРИМЕЧАНИЕ. Чтобы отключить постоянные ENV, необходимо повторно отредактировать файлы и удалить строки, которые были добавлены при их определении.

Когда я проверяю среду своей системы, всплывает множество переменных среды. Как я могу просто искать определенную переменную?

В книге, которую я читаю, говорится:

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

Как это сделать в терминале Linux?

5 ответов 5

Например, для переменной окружения $HOME используйте:

Что затем печатает что-то похожее на:

Редактировать: согласно комментарию Стефана Шазеласа, может быть лучше использовать printenv вместо echo :

Вы забыли кавычки (если только вы не имеете в виду синтаксис zsh или rc/es). echo — плохой выбор команды, так как она может преобразовать содержимое переменной. Он выведет содержимое параметра оболочки с тем же именем. Это не обязательно то же самое при использовании оболочки Bourne или для env vars, например, 1 , * . И вы не можете использовать этот подход для переменных env, имя которых недопустимо в качестве имени переменной оболочки.

Также обратите внимание, что если есть несколько записей среды с одинаковым именем (хорошо, патологический случай), то, какую из них вы получите, зависит от оболочки (обычно либо первая, либо последняя). printenv VAR отобразит их все (по крайней мере, для реализации GNU).

Не очень чисто редактировать свой ответ из комментария, который уже был сделан ранее под другим, более подходящим ответом ( printenv ), когда оказывается, что printenv и printenv VAR даже кажутся лучшим способом.

Вы увидите все переменные среды. Для получения дополнительной информации вы можете взглянуть на:

Чтобы приблизиться к фактическому ответу на вопрос, printenv имя_переменной будет отображать только именованную переменную; например, printenv HOME будет делать примерно то же самое, что и echo "$HOME" .

Важно понимать, что каждый процесс имеет свой собственный набор переменных среды.

Когда процесс вызывает системный вызов fork(), создается второй процесс (дочерний), идентичный первому (родительскому) (этот copy включает в себя среду, которая находится чуть выше стека (или чуть ниже, в зависимости от того, что вы думаете о стеках :-) - но в unix/linux стек растет вниз от старших адресов) .

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

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

В библиотеке C есть оболочки для системного вызова execve(), которые будут передавать текущую среду (т. е. копию родительской среды), а не вызывающую программу, предоставляющую ее (поэтому фактически дочерний элемент наследует родительская среда) — см. environ(7) .

Попробуйте запустить (от root) команду ps axeww | меньше . это покажет вам среду для всех процессов! Интересным является процесс с идентификатором 1 (т. е. процесс инициализации — первый процесс, созданный ядром во время загрузки).

Если вы хотите просмотреть среду для определенного процесса (и вы знаете его идентификатор процесса), попробуйте запустить команду cat /proc/

с идентификатором процесса).

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

Но, в конце концов, вся эта болтовня сводится к тому, что @chaos сказал выше, если вы хотите посмотреть текущее значение определенной переменной среды в вашем процессе оболочки, просто используйте (встроенную) команду echo "$ " (заменив на имя интересующей вас переменной окружения). просто имейте в виду, что одна и та же переменная может иметь другое значение или вообще не существовать в другом процессе.

Вычислительная среда — это платформа (платформа = операционная система + процессор), на которой пользователь может запускать программы.

Что такое переменная?

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

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

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

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

Переменные среды могут изменить поведение программного обеспечения/программ.

Нажмите здесь, если видео недоступно

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

Давайте изучим некоторые распространенные переменные среды –

Эта переменная содержит разделенный двоеточием (:) список каталогов, в которых ваша система ищет исполняемые файлы.

Когда вы вводите команду на терминале, оболочка ищет команду в разных каталогах, указанных в переменной $PATH. Если команда найдена, она выполняется. В противном случае возвращается сообщение об ошибке «команда не найдена».

ПОЛЬЗОВАТЕЛЬ

ГЛАВНАЯ

Путь по умолчанию к домашнему каталогу пользователя

РЕДАКТОР

Путь к программе, которая редактирует содержимое файлов

Уникальный идентификатор

Уникальный идентификатор пользователя

СРОК

Эмулятор терминала по умолчанию

ОБОЛОЧКА

Оболочка, используемая пользователем

Доступ к значениям переменных

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

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

Команда env отображает все переменные среды.

Установить новые переменные среды

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

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

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

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

Это навсегда удалит переменную и ее значение.

Обзор:

  • Переменные среды управляют поведением программ в вашей операционной системе.

Чтобы отобразить значение переменной

Отображает все переменные среды

Создать новую переменную

Удалить переменную

Чтобы установить значение переменной среды

Компания Acunetix, разработчик сверхточных сканеров безопасности веб-приложений, спонсировала проект Guru99, помогая точно и с максимальной скоростью сканировать более 4500 веб-уязвимостей.

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

Установить значение переменной среды

Вы должны понимать, что переменные среды инициализируются так же, как инициализируются другие переменные в языке программирования, то есть переменные bash. Хотя название переменной окружения всегда чувствительно к регистру, т. е. оно должно быть в верхнем регистре. Переменной среды можно присвоить более двух значений с помощью двоеточия «:».

Вот простой общий синтаксис инициализации переменной среды. Широко известна встроенная команда set для установки значений переменных среды. Если вы используете его без каких-либо аргументов или установленного флага, он заставит вашу оболочку отображать все переменные среды, как вы можете видеть на изображении ниже. Типичными примерами встроенного «set» являются «set –x» для расширения и отображения, «set –e» для выхода из программы при обнаружении любого ненулевого состояния, «set –u» и «set –o» для отображать ошибку при обнаружении переменной без заданного значения, «установить –n», чтобы избежать выполнения команд, и многое другое.

Распечатать все переменные среды с помощью Env

Давайте начнем использовать различные команды в оболочке для вывода переменных среды. Перед этим запустите консольное приложение с помощью «Ctrl+Alt+T» на рабочем столе Ubuntu 20.04. Самый первый способ отобразить все переменные среды — использовать команду «env» в оболочке. Но он будет отображать только текущие активные переменные среды системы.

Вы также можете передать в него некоторые аргументы, чтобы изменить вывод. Мы использовали простую команду «env», чтобы отобразить все текущие переменные среды в нашей оболочке в соответствии с показанным выводом.

Распечатать все переменные среды с помощью printenv

Давайте рассмотрим еще один пример вывода всех переменных среды в оболочке. На этот раз мы использовали для этого команду «printenv» в оболочке. Команда «printenv» отображает текущие активные переменные среды и ранее указанные переменные среды в оболочке.

Вы можете увидеть результат использования команды «printenv» для отображения всех переменных среды в оболочке, как показано на снимке ниже. У нас есть много переменных среды вместе с присвоенными им значениями, т. е. переменные оболочки, переменные отображения, переменные аутентификации и многое другое, как показано на изображении.

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

На изображении ниже показано более четкое представление вывода команды «больше» для печати переменных среды. Нажмите клавишу «Ввод», чтобы изучить дополнительные переменные.

Команда printenv очень удобна, когда нужно передать свои переменные данные в другие файлы. Это означает, что мы также можем перенести все переменные среды и их значения в какой-нибудь bash-файл с помощью команды «printenv». Вы должны использовать знак «больше» после ключевого слова «printenv» вместе с именем файла, в котором будут храниться данные переменных.

После этого вы увидите, что в файле будут все переменные среды. Вывод одинаков для отображения содержимого файла с помощью команды «cat» и команды «printenv» в оболочке.

С другой стороны, вы также можете использовать аргументы в команде «printenv», чтобы сделать ее более конкретной. Допустим, если вы хотите проверить значения переменной среды «HOME» в оболочке, вы должны указать ее в команде «printenv» с ключевым словом «grep». Если в системе существует переменная с именем «HOME», она отобразит ее в оболочке. Как видите, он отображал переменную «HOME» и ее значение, т. е. путь в оболочке.

Давайте проверим некоторые другие переменные среды. Скажем, проверьте папку «tmp», используя ключевое слово «grep». Папка «tmp» принадлежит переменной «SESSION_MANAGER» в нашей системе.

Теперь давайте проверим папку «bin», которая широко используется в системе. После запуска команды мы получили взамен 4 переменные среды, показывающие, что она является частью всех этих переменных среды системы Ubuntu 20.04.

Проверка переменной, которой даже не существует в вашей системе, приводит к пустому результату. Поскольку в системе нет переменной среды для папки или файла «нового».

Вы также можете использовать другую команду для отображения всех переменных, найденных в вашей системе, т. е. не только переменных среды. Для этой цели можно использовать команду declare вместе с флагом "-p" в запросе.

Если вы хотите отобразить только переменные среды в своей оболочке, вы также можете сделать это, объявив команду. Вы должны объявить флаг «-xp» вместо флага «-p», как показано на изображении. Вы можете просмотреть вывод, в котором отображаются только переменные среды.

Заключение

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

Об авторе

Омар Фарук

Здравствуйте, читатели! Меня зовут Омар. В последнее десятилетие я пишу технические статьи. Вы можете ознакомиться с моими текстами.

Читайте также: