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

25

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

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

атп
источник

Ответы:

11

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

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

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

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

Мали
источник
Он работает на RedHat (по состоянию на 7.6). «/ Etc / environment» пуст, если мой сервер и настройки VAR=valueвступили в силу в оболочке (после повторного входа в систему).
DKroot
39

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

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

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

Neula
источник