Как установить переменные среды для пользователя наиболее общим способом, который не зависит от переменных среды оболочки (например, профиль для оболочек типа 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
который, как я считаю, будет частью процесса входа в систему и будет отдельным от любой оболочки.