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