Переменные среды в Linux-подобных системах

Переменные среды в Linux-подобных системах

Как задать переменные окружения для пользователя наиболее общим способом, который не зависит от переменных окружения оболочки (например, профиль для оболочек типа Bourne, bahsrc, zshrc, zshenv, ..)? Идея состоит в том, чтобы задать переменные окружения для пользователя во время входа пользователя в систему и сделать их доступными (разветвленными) для любого процесса (порождённого не только процессом оболочки, но и любым другим процессом), включая любой вид оболочки?

решение1

Эта документация UbuntuПереговоры о ~/.pam_environment:

Переменные среды сеанса

Подходящими файлами для настроек переменных среды, которые должны влиять только на конкретного пользователя (а не на систему в целом), являются ~/.pam_environmentи ~/.profile. После редактирования одного из этих файлов, вы должныповторно войтидля инициализации переменных.

~/.pam_environment

Этот файл специально предназначен для настройки пользовательской среды. Это не файл скрипта, а скорее состоит из выражений присваивания, по одному на строку. Этот пример устанавливает переменную FOO в литеральную строку и изменяет переменную PATH:

FOO=bar
PATH DEFAULT=${PATH}:${HOME}/MyPrograms

Примечание:

  1. При выполнении простого присваивания переменной, как в примере, значение можно не заключать в кавычки FOO=bar.

  2. Синтаксис, используемый для изменения PATH, который отличается от синтаксиса файлов скриптов, необходим для работы расширения переменных.

  3. ~/.pam_environment записывается, когда вы используете различные графические интерфейсы для установки языка или региональных форматов. Следовательно, если вы, например, установите LC_TIME, редактируя ~/.pam_environmentвручную, ваша запись будет перезаписана, если вы впоследствии используете графический интерфейс поддержки языка для изменения настройки региональных форматов.

Этот файл, как и /etc/environment, по-видимому, просматриваетсяpam_env.soчто, как я полагаю, будет происходить как часть процесса входа в систему и будет отделено от какой-либо оболочки.

Связанный контент