Ubuntu: автоматическая установка переменных окружения |
![]() |
Добавил(а) microsin |
Переменные окружения (environment variables) - ключевая функция, помогающая организовать взаимодействие между пользователем, программным обеспечением и операционной системой. Переменные окружения дают возможность пользователям сохранять специфические для него данные или данные, специфические для системы и управлять ими, конфигурируя таким способом приложения и сервисы. В Ubuntu переменные окружения используются для настройки поведения командной строки (shell), определение путей (для запуска программ и поиска файлов), а также сохранения настроек для различного ПО. Например, в системе программирования ESP-IDF переменная переменная окружения $IDF_PATH содержит в себе полный путь до своего каталога. В этом руководстве (перевод статьи [1]) будет показано, как эффективно настраивать и управлять переменными окружения в Ubuntu. Переменные окружения это пары ключ-значение, к которым могут получать доступ различные программы и службы, работающие в вашей системе. В этих парах может находится следующая информация: • Файловые пути для системы и для пользователя. Просмотр переменных окружения. Чтобы посмотреть текущий список переменных окружения, вы можете запустить команду printenv, после которой укажите имя интересующей переменной. Например: $ printenv IDF_PATH
Запуск команды printenv без указания имени переменной выведет список всех переменных окружения. Также полный список переменных окружения можно вывести командой env: $ 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 - запуск программы в модифицированном рабочем окружении
SYNOPSIS
env [OPTION]... [-] [ИМЯ=ЗНАЧЕНИЕ]... [COMMAND [ARG]...]
ОПИСАНИЕ
Установит каждое ИМЯ в ЗНАЧЕНИЕ (ИМЯ это переменная окружения)
и запустит команду 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, для неё имя интересующей переменной окружения нужно указать через символ $, например: $ echo $PATH
/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:/home/имядомена/
пользователь/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
[Временная настройка переменных окружения] С помощью команды export, выполненной в терминале или скрипте, вы можете временно установить значение для текущего терминала командной строки (шелла). Эта переменная будет доступна только для текущей сессии, и будет потеряна после закрытия окна терминала. Например, для установки переменной окружения $IDF_PATH запустите следующую команду: $ export IDF_PATH=~/esp/v441
Для проверки, что переменная окружения была установлена, выполните команду: $ printenv IDF_PATH
/home/имядомена/пользователь/esp/v441
Обратите внимание, что путь, указанный до домашнего каталога пользователя с помощью спецсимвола '~', система автоматически развернула до полного абсолютного пути от корневого каталога /. Чтобы установить переменную окружения буквально, нужно указать её значение в двойных кавычках: $ export IDF_PATH="~/esp/v441"
$ printenv 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
Добавьте команды для установки переменных окружения в конец файла: export IDF_PATH=~/esp/esp-idf Сохраните файл и выйдите из редактора текста. Настройки применятся автоматически в новом открытом окне терминала. Чтобы немедленно применить изменения в текущем окне, запустите команду: $ source ~/.bashrc
Примечание: файл ~/.bashrc можно использовать не только для автоматической настройки переменных окружения, но и для любых действий, которые запустятся при открытии окна терминала x-terminal-emulator. Команда unset. Чтобы отменить установку переменной окружения, используйте команду unset: $ unset IDF_PATH
Файлы ~/.bashrc и ~/.profile широко используются для управления переменными окружения и конфигурациями, относящимися к конкретному пользователю. Вот отличия этих файлов по своему назначению, и когда они запускаются: ~/.bashrc выполняется для интерактивного терминала командой строки, такого как новое открытое вами окно терминала (для Ubuntu это программа x-terminal-emulator, запускаемая горячими клавишами Ctrl+Alt+T). ~/.profile выполняется для шеллов логина, таких как логин через SSH или TTY. В большинстве случаев рекомендуется добавлять переменные окружения в ~/.profile, поскольку это дает гарантию, что переменные будут доступны как для шеллов логина, так и для шеллов, не относящихся к логину (non-login shells). Однако если вам нужно установить переменную только для интерактивному шеллу, то используйте ~/.bashrc. [Настройка переменных окружения файлами /etc/profile.d/*.sh] Для автоматической настройки переменных вы также можете создать свой shell-скрипт (файл с расширением .sh) в каталоге /etc/profile.d, он запустится при логине пользователя. Давайте для примера создадим shell-скрипт /etc/profile.d/custom-env.sh, и установим в нем переменные с помощью команды export. $ sudo nano /etc/profile.d/custom-env.sh
Вставьте в файл строки: export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 В следующий раз, когда пользователь залогинится, у него автоматически будут установлены переменные окружения JAVA_HOME, JRE_HOME и MY_ENV. $ echo $MY_ENV
value1
[Ссылки] 1. Setting Up Environment Variables on Ubuntu site:tecadmin.net. |