Ubuntu: автоматическая установка переменных окружения
Добавил(а) microsin
Переменные окружения (environment variables) - ключевая функция, помогающая организовать взаимодействие между пользователем, программным обеспечением и операционной системой. Переменные окружения дают возможность пользователям сохранять специфические для него данные или данные, специфические для системы и управлять ими, конфигурируя таким способом приложения и сервисы. В Ubuntu переменные окружения используются для настройки поведения командной строки (shell), определение путей (для запуска программ и поиска файлов), а также сохранения настроек для различного ПО. Например, в системе программирования ESP-IDF переменная переменная окружения $IDF_PATH содержит в себе полный путь до своего каталога. В этом руководстве (перевод статьи [1]) будет показано, как эффективно настраивать и управлять переменными окружения в Ubuntu.
Переменные окружения это пары ключ-значение, к которым могут получать доступ различные программы и службы, работающие в вашей системе. В этих парах может находится следующая информация:
• Файловые пути для системы и для пользователя. • Ключи API и данные учетных записей. • Конфигурации программного обеспечения. • Настройки по умолчанию для шелла и команд.
Просмотр переменных окружения. Чтобы посмотреть текущий список переменных окружения, вы можете запустить команду printenv, после которой укажите имя интересующей переменной. Например:
$ printenv IDF_PATH
Запуск команды printenv без указания имени переменной выведет список всех переменных окружения. Также полный список переменных окружения можно вывести командой env:
$ env --help
Использование: env [ПАРАМЕТР]… [-] [ИМЯ=ЗНАЧЕНИЕ]… [КОМАНДА [АРГ]…]
Присваивает каждому ИМЕНИ соответствующее ЗНАЧЕНИЕ в окружении и запускает КОМАНДУ.
Аргументы, обязательные для длинных параметров, обязательны и для коротких.
-i, --ignore-environment начать с пустым окружением
-0, --null завершать каждую выводимую строку NUL,
a не символом новой строки
-u, --unset=ИМЯ удалить переменную с ИМЕНЕМ из окружения
-C, --chdir=КАТ изменить рабочий каталог на КАТ
-S, --split-string=S обработать и разделить S на отдельные аргументы;
используется для указания нескольких аргументов
в строках с #!
-v, --debug выводить подробную информацию на каждом шаге обработки
--help показать эту справку и выйти
--version показать информацию о версии и выйти
Просто - будет синонимом для -i. Если не задана КОМАНДА, то печатает
получившееся (имеющееся в наличии) окружение.
Страница справки по GNU coreutils: https://www.gnu.org/software/coreutils/. Об ошибках в переводе сообщений env пишите по адресу gnu@d07.ru. Полная документация: https://www.gnu.org/software/coreutils/env, или она доступна локально: info '(coreutils) env invocation'.
$ man env
ENV(1)
Commands
NAME
env - запуск программы в модифицированном рабочем окружении
ОПИСАНИЕ
Установит каждое ИМЯ в ЗНАЧЕНИЕ (ИМЯ это переменная окружения)
и запустит команду COMMAND.
Обязательные аргументы для длинных опций также обязательны
и для коротких опций.
-i, --ignore-environment
старт с пустым окружением
-0, --null
заканчивает каждую выводимую строку символом NUL вместо
символа новой строки.
-u, --unset=NAME
удалит переменную из окружения
-C, --chdir=DIR
поменяет рабочую директорию на DIR
-S, --split-string=S
обработает и разделит S на отдельные аргументы; используется
для передачи нескольких аргументов в одиночных строках
-v, --debug
напечатает подробную информацию по каждому шагу обработки
--help отобразит этот текст подсказки и завершит работу
--version
выведет информацию о версии и завершит работу
Простой - подразумевает -i. Если не указана COMMAND, то будет выведено
результирующее окружение.
ОПЦИИ
-S/--split-string используется в скриптах
Опция -S позволяет указать несколько параметров в скрипте. Если запустить
скрипт с именем 1.pl, которое содержится первая строка:
#!/usr/bin/env -S perl -w -T
.. то будет выполнена команда perl -w -T 1.pl .
Без параметра '-S' скрипт завершится с ошибкой:
/usr/bin/env: 'perl -w -T': No such file or directory
Подробности см. в полной документации.
АВТОРЫ
Richard Mlynarik, David MacKenzie и Assaf Gordon.
Для просмотра переменной окружения можно также использовать команду echo, для неё имя интересующей переменной окружения нужно указать через символ $, например:
С помощью команды export, выполненной в терминале или скрипте, вы можете временно установить значение для текущего терминала командной строки (шелла). Эта переменная будет доступна только для текущей сессии, и будет потеряна после закрытия окна терминала.
Например, для установки переменной окружения $IDF_PATH запустите следующую команду:
$ export IDF_PATH=~/esp/v441
Для проверки, что переменная окружения была установлена, выполните команду:
Обратите внимание, что путь, указанный до домашнего каталога пользователя с помощью спецсимвола '~', система автоматически развернула до полного абсолютного пути от корневого каталога /. Чтобы установить переменную окружения буквально, нужно указать её значение в двойных кавычках:
Для переменных окружения, распространяющихся на систему, отредактируйте файл /etc/environment. В этом файле находится список пар ключ-значение, по одной паре на строку:
$ sudo mcedit /etc/environment
Как видно в этом примере, здесь настроена системная переменная PATH, которая указывает полный путь для поиска запускаемых программ. Эта переменная PATH будет автоматически доступна для каждой запускаемой сессии.
Примечание: PATH это список путей, устанавливаемых для пользователя. Сама система также добавляет в эту переменную окружения еще и свой список.
Чтобы добавить свою переменную окружения, вставьте в новой строке следующее:
IDF_PATH="~/esp/v441"
Сохраните изменения файла и выйдите из редактора. Настройка вступит в силу после перезагрузки.
[Настройка переменной окружения для определенного пользователя]
Для настройки переменных окружения, относящихся только к определенному пользователю, вы можете отредактировать его файлы ~/.profile или ~/.bashrc.
Замечание: в руководстве [1] для примера использовался файл ~/.profile. Однако на моей системе Ubuntu 20.04 файл ~/.profile не запускался автоматически при логине пользователя в систему. Файл ~/.bashrc для постоянных изменений работал нормально, поэтому здесь будем использовать его:
$ gedit ~/.bashrc
Добавьте команды для установки переменных окружения в конец файла:
Сохраните файл и выйдите из редактора текста. Настройки применятся автоматически в новом открытом окне терминала. Чтобы немедленно применить изменения в текущем окне, запустите команду:
$ source ~/.bashrc
Примечание: файл ~/.bashrc можно использовать не только для автоматической настройки переменных окружения, но и для любых действий, которые запустятся при открытии окна терминала x-terminal-emulator.
Команда unset. Чтобы отменить установку переменной окружения, используйте команду unset:
Файлы ~/.bashrc и ~/.profile широко используются для управления переменными окружения и конфигурациями, относящимися к конкретному пользователю. Вот отличия этих файлов по своему назначению, и когда они запускаются:
~/.bashrc выполняется для интерактивного терминала командой строки, такого как новое открытое вами окно терминала (для Ubuntu это программа x-terminal-emulator, запускаемая горячими клавишами Ctrl+Alt+T).
~/.profile выполняется для шеллов логина, таких как логин через SSH или TTY.
В большинстве случаев рекомендуется добавлять переменные окружения в ~/.profile, поскольку это дает гарантию, что переменные будут доступны как для шеллов логина, так и для шеллов, не относящихся к логину (non-login shells). Однако если вам нужно установить переменную только для интерактивному шеллу, то используйте ~/.bashrc.
Для автоматической настройки переменных вы также можете создать свой shell-скрипт (файл с расширением .sh) в каталоге /etc/profile.d, он запустится при логине пользователя.
Давайте для примера создадим shell-скрипт /etc/profile.d/custom-env.sh, и установим в нем переменные с помощью команды export.