Я понимаю, что первый загружается до второго, но в чем заключается концептуальная разница? Есть ли веские причины, по которым я должен устанавливать некоторые переменные в одной, а не в другой? За исключением того факта, что, по- /etc/environment
видимому, существует настройка среды для всех процессов, запускаемых системой, в то время /etc/profile
как для настройки среды используется и распространяется из оболочки входа, правильно?
Кроме того, на заметку, какую программу традиционно читает /etc/environment
? Это связано с POSIX или просто соглашением?
VAR=value
вступили в силу в оболочке (после повторного входа в систему)./etc/environment
не является частью POSIX, он принадлежит PAM (Pluggable Authentication Module), и его могут использовать только программы, скомпилированные с поддержкой PAM (в первую очередь системы входа в систему, которые впоследствии запускают оболочку или пользовательскую среду). Это означает, что он даже не читается вашей оболочкой.Вы можете увидеть программы, использующие
/etc/environment
сgrep -l pam_env /etc/pam.d/*
.Так
/etc/environment
используется для установки переменных для программ, которые обычно не запускаются из оболочки.источник