В чем разница между /etc/environment и /etc/profile?

Я понимаю, что первый загружается до второго, но в чем заключается концептуальная разница? Есть ли веские причины, по которым я должен устанавливать некоторые переменные в одной, а не в другой? За исключением того факта, что /etc/environment кажется, существует для настройки среды для всех процессов, запущенных системой, в то время как /etc/profile верно для настройки среды, используемой и распространяемой из оболочки входа в систему?

Также, на заметку о том, какая программа традиционно читается /etc/environment? Это связано с POSIX или просто соглашением?

2 ответа

Решение

Извлечение из справки Ubuntu

/etc/environment - Этот файл специально предназначен для общесистемных настроек переменных среды. Это не файл сценария, а скорее состоит из выражений присваивания, по одному на строку. В частности, этот файл хранит общесистемные настройки языка и пути.

/etc/profile - Этот файл выполняется при каждом входе в оболочку входа в bash (например, при входе через консоль или через ssh), а также в DisplayManager при загрузке сеанса рабочего стола.

Я думаю, что все это просто соглашение, но недалеко от стандарта (я не знаю о системах, подобных RedHat).

/etc/environment не является частью POSIX, он принадлежит PAM (Pluggable Authentication Module), и его могут использовать только программы, скомпилированные с поддержкой PAM (прежде всего системы входа в систему, которые впоследствии запускают оболочку или пользовательскую среду). Это означает, что он даже не читается вашей оболочкой.

Вы можете увидеть программы, используя /etc/environment с grep -l pam_env /etc/pam.d/*,

Так /etc/environment используется для установки переменных для программ, которые обычно не запускаются из оболочки.

Другие вопросы по тегам