"Интерактивная оболочка входа в систему запускается после успешного входа в систему, используя / bin / login, читая файл / etc / passwd. Этот вызов оболочки обычно читает / etc / profile и его частный эквивалент ~ / .bash_profile при запуске.
Интерактивная оболочка без входа в систему обычно запускается из командной строки с помощью программы оболочки (например, [prompt] $ / bin / bash) или команды / bin / su. Интерактивная оболочка без входа в систему также запускается с помощью терминальной программы, такой как xterm или konsole, из графической среды. Этот тип вызова оболочки обычно копирует родительскую среду и затем читает пользовательский файл ~ / .bashrc для получения дополнительных инструкций по настройке запуска. "
Http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html
Поэтому я не буду помещать переменные среды в bashrc, потому что это не только противоречит общему соглашению, но вы также пропустите переменные bashrc при вызове терминала из графической среды рабочего стола.
На Redhat в /etc/profile
я нашел этот комментарий:
«Общесистемные псевдонимы и функции должны быть в / etc / bashrc. Личные переменные среды и запускаемые программы должны быть в ~ / .bash_profile. Персональные псевдонимы и функции должны быть в ~ / .bashrc.»
Поэтому, если вы хотите установить переменные окружения для пользователя, сделайте это в пользовательском файле .bash_profile.
Направляясь к .bash_profile
я прочитал:
«Личные переменные среды и автозагрузка программ.
Личные псевдонимы и функции должны быть в ~ / .bashrc. Общесистемные переменные среды и запускаемые программы находятся в / etc / profile. Общесистемные псевдонимы и функции находятся в / etc / bashrc. "
Заключение
Если вы хотите, чтобы только root видел программы, например, в / sbin
я добавил бы этот путь к .bash_profile
файлу root . Но если вы хотите , чтобы каждый пользователь видеть , что корень конкретных программ, установленных на вашем компьютере , я бы поставил /sbin
в /etc/.profile
. Теперь каждый пользователь может использовать завершение табуляции для поиска специфических корневых программ и повышения прав при необходимости.
Особый случай: SSH
Когда ssh запускается из командной строки, запускается интерактивная оболочка входа. Но в этом случае /etc/profile
не читается. Когда я определял переменные окружения в .bash_profile
файле каждого пользователя, он работал с ssh.
~/.profile
это еще один действительный вариант