Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Переменные окружения для пользовательских сессий
Присвоение пользовательских значений переменным окружения может быть выполнено в файле .profile, который расположен в домашнем каталоге пользователя. Этот файл выполняется оболочкой входа (login shell) при каждом входе в пользовательскую сессию после выполнения системного файла /etc/profile, т.е. может переопределять значения переменных окружения . заданные на системном уровне.
Наиболее частое применение этого файла - изменение значения переменной окружения PATH (список каталогов, в которых производится поиск исполняемых файлов). Например, для добавления в список каталога /opt/wine-6.17 (см. Установка wine на Astra Linux) следует добавить в файл .profile строку:
Блок кода |
---|
PATH=/opt/wine-6.17:$PATH |
Другим примером часто используемых переменных окружения являются переменные:
- LD_PRELOAD - список библиотек, загружаемых до загрузки других библиотек, независимо от упоминания их запускаемой программе;
- LD_LIBRARY_PATH - список каталогов, в которых будет выполняться поиск динамических библиотек, упоминаемых в запускаемой программе.
Подробнее см. man ld.so.
Значения этих переменных могут задаваться так же, как значения переменной PATH в примере выше:
Блок кода |
---|
LD_PRELOAD=/usr/lib/spo/spo.so:$LD_PRELOAD
LD_LIBRARY_PATH="/user/lib/spo:$LD_LIBRARY_PATH |
Информация |
---|
Использование переменной окружения LD_PRELOAD является небезопасным, так как путем подмены библиотек позволяет внедрить в приложения непредусмотренные возможности. "При запуске процесса с установленными привилегиями загрузчик динамических библиотек осуществляет сброс переменных среды окружения, позволяющих осуществлять загрузку динамических библиотек из нестандартных каталогов LD_LIBRARY_PATH и LD_PRELOAD. Таким образом, установка привилегий для пользователя может привести к невозможности запуска приложений, использующих динамическую загрузку библиотек из нестандартных каталогов." |
Для того, чтобы применить сделанные изменения не перезапуская пользовательскую сессию, можно выполнить файл .profile из командной строки командой:
Command |
---|
. ~/.profile |
или
Command |
---|
source ~/.profile |
Информация | ||
---|---|---|
Если в качестве оболочки входа используется оболочка bash, то:
Кроме того, поведение bash может изменяться в зависимости от способа вызова и опций команды, подробнее см. man bash.
Значения переменных окружения должны присваиваться в используемых файлах. |
Системные переменные окружения
Присвоение значений переменным окружения для оболочек входа на системном уровне выполняется в файле /etc/profile (и, если существует каталог /etc/profile.d, сценариями в файлах с расширением .sh, находящихся в этом каталоге). В отличие от пользовательских переменных системные переменные должны экспортироваться, например:
Блок кода |
---|
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" export PATH |
Присвоенные значения могут быть переопределены в пользовательских файлах (см. выше).
Переменные окружения PAM-стека
При выполнении PAM-стека (аутентификация и авторизация пользователей) используется отдельное окружение, системные параметры которого задаются в файлах /etc/security/pam_env.conf и /etc/environment, а пользовательские - в файлах ~/.pam_environment.
Подробнее см. man pam_env и man pam_env.conf.
Переменные окружения пользовательских служб systemd
Конфигурационные файлы при запуске пользовательских служб извлекаются из каталогов:
- ~/.config/environment.d/*.conf
- /etc/environment.d/*.conf
- /run/environment.d/*.conf
- /usr/lib/environment.d/*.conf
- /etc/environment
Эти файлы не являются сценариями, и содержат пары "КЛЮЧ=ЗНАЧЕНИЕ". Подробнее cм. man environment.d.
Переменные окружения для графической сессии Xorg
Переменные окружения для графической сессии Xorg можно задавать в файле /etc/X11/fly-dm/Xsession. Синтаксис такой же, как и для других сценариев bash:
Блок кода |
---|
export <имя_переменной>=<значение> |
Переменные окружения отдельных команд командной строки
При работе в командной строке переменные окружения можно задавать прямо в вызовах команд перед командой в формате <имя_переменной_окружения>=<значение_переменной_окружения>. Область действия таких переменных ограничивается одной командой. Например, присвоение переменное окружения KRB5_TRACE значения /dev/stdout для вывода отладочной информации команды kinit:
Command |
---|
KRB5_TRACE=/dev/stdout kinit admin |
При использовании sudo значение должно быть задано непосредственно перед командой, например, присвоение переменной окружения PKISPAWN_STARTUP_TIMEOUT_SECONDS значения 60 для выполнения команды astra-freeipa-server с правами администратора:
Command |
---|
sudo PKISPAWN_STARTUP_TIMEOUT_SECONDS=600 astra-freeipa-server -o --dogtag |