В чем разница между /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
используется для установки переменных для программ, которые обычно не запускаются из оболочки.