Linux: переменные окружения

Используют локальный .bashrc для того чтобы обезопасить юзера (от администраторов ресурса 🙂 ), чтобы нежелательное ПО могло прописаться в автостарт только в его окружении и не заразило бы весь сервер.

В случае установки пакетов от имени рута через rpm или deb они сами сконфигурируют /etc/profile, указав всем юзерам на новые каталоги. К примеру, это может быть java, которая воткнет туда путь на /usr/lib/java/java1.5 и скажет всем, что это $JAVA_HOME. А вот уже Вы в своем энвайронменте пишете export PATH=$JAVA_HOME/bin/:$PATH для того, чтобы использовать ИМЕННО эту версию жавы в своих путях, так как в /usr/lib/java может быть установлено много версий и Вам в консоли нужно использовать только одну. Если $JAVA_HOME/bin определять в /etc/profile, то в данном случае одна жава будет принудительно назначена администратором для всех юзверей, а это не есть правильно в большинстве случаев, так как на практике используются разные версии, не только самая последняя.

Но именно это и нужно. Как часто вы запускаете из своего окружения программы от имени другого юзера? Думаю, никогда или почти никогда. Если и запускаете, то через sudo, а это уже переназначение энвайронмента. Те процессы, которые выполняются в bg, их запускает системный юзер, и каждому из них соответствует ОБЩИЙ environment из /etc/profile, а также ЛОКАЛЬНЫЙ из ~/.bashrc

Опять же, если это не баш, то локальный энвайронмент инициализируется в другом файле, в зависимости от интерпретатора.

Источник: переменные окружения | Linux в вопросах и ответах.