![Переменные среды в Linux-подобных системах](https://rvso.com/image/1438160/%D0%9F%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%D1%80%D0%B5%D0%B4%D1%8B%20%D0%B2%20Linux-%D0%BF%D0%BE%D0%B4%D0%BE%D0%B1%D0%BD%D1%8B%D1%85%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0%D1%85.png)
Как задать переменные окружения для пользователя наиболее общим способом, который не зависит от переменных окружения оболочки (например, профиль для оболочек типа Bourne, bahsrc, zshrc, zshenv, ..)? Идея состоит в том, чтобы задать переменные окружения для пользователя во время входа пользователя в систему и сделать их доступными (разветвленными) для любого процесса (порождённого не только процессом оболочки, но и любым другим процессом), включая любой вид оболочки?
решение1
Эта документация UbuntuПереговоры о ~/.pam_environment
:
Переменные среды сеанса
Подходящими файлами для настроек переменных среды, которые должны влиять только на конкретного пользователя (а не на систему в целом), являются
~/.pam_environment
и~/.profile
. После редактирования одного из этих файлов, вы должныповторно войтидля инициализации переменных.
~/.pam_environment
Этот файл специально предназначен для настройки пользовательской среды. Это не файл скрипта, а скорее состоит из выражений присваивания, по одному на строку. Этот пример устанавливает переменную FOO в литеральную строку и изменяет переменную PATH:
FOO=bar PATH DEFAULT=${PATH}:${HOME}/MyPrograms
Примечание:
При выполнении простого присваивания переменной, как в примере, значение можно не заключать в кавычки
FOO=bar
.Синтаксис, используемый для изменения PATH, который отличается от синтаксиса файлов скриптов, необходим для работы расширения переменных.
~/.pam_environment
записывается, когда вы используете различные графические интерфейсы для установки языка или региональных форматов. Следовательно, если вы, например, установите LC_TIME, редактируя~/.pam_environment
вручную, ваша запись будет перезаписана, если вы впоследствии используете графический интерфейс поддержки языка для изменения настройки региональных форматов.
Этот файл, как и /etc/environment
, по-видимому, просматриваетсяpam_env.so
что, как я полагаю, будет происходить как часть процесса входа в систему и будет отделено от какой-либо оболочки.