Каковы функциональные различия между .profile .bash_profile и .bashrc

Ответы:

151

.bash_profileи .bashrcспецифичны для bash, тогда .profileкак читаются многими оболочками при отсутствии их собственных специфичных для оболочки конфигурационных файлов. ( .profileиспользовался оригинальной оболочкой Bourne.) .bash_profileили .profileчитается оболочкой входа в систему вместе с .bashrc; подоболочки только для чтения .bashrc. (Между управлением заданиями и современными оконными системами .bashrcсамо по себе мало что используется. Если вы используете screenили tmux, экраны / окна обычно запускают подоболочки вместо оболочек входа.)

Идея заключалась в том, что одноразовая настройка была сделана .profile(или ее специфичная для оболочки версия), а для каждой оболочки - .bashrc. Например, вы, как правило, хотите загружать переменные среды только один раз за сеанс вместо того, чтобы их сбивать каждый раз, когда вы запускаете подоболочку внутри сеанса, тогда как вы всегда хотите, чтобы ваши псевдонимы (которые не распространяются автоматически, как переменные среды).

Другие известные файлы конфигурации оболочки:

/etc/bash_profile(отступление /etc/profile) читается перед пользователем .profileдля общесистемной конфигурации, а также /etc/bashrcв подоболочках (для этого отступления нет). Многие системы, включая Ubuntu, также используют /etc/profile.dкаталог, содержащий скриптлеты оболочки, которые .( source) -ed из /etc/profile; фрагменты здесь относятся к каждой оболочке с *.shприменением ко всем совместимым с Bourne / POSIX оболочкам и другим расширениям, применяемым к этой конкретной оболочке.

geekosaur
источник
58

.профиль

.profileпредназначен для вещей, которые не связаны конкретно с Bashпеременными окружения PATHи друзьями, и должны быть доступны в любое время.

Например, .profileтакже должен быть загружен при запуске графического сеанса рабочего стола.


.bashrc

.bashrcпредназначен для настройки использования интерактивного Bash, например Bash aliases, для настройки вашего избранного editor, настройки и Bash promptт. д.


.bash_profile

.bash_profile предназначен для того, чтобы убедиться, что все вещи в .profileи .bashrcзагружены login shells.

Например, .bash_profileможет быть что-то простое, как

. ~/.profile
. ~/.bashrc

Если вы пропустите .bashrc, .profileбудет загружен только.

MangeshBiradar
источник
1
Это ответило на мой вопрос для Mac OS X
Джейк Торонто
38

Согласно странице руководства bash, .bash_profileвыполняется для оболочек входа в систему, а .bashrcдля интерактивных оболочек без входа в систему.

Итак, что такое оболочка для входа или не входа?

Когда вы входите в систему (вводите имя пользователя и пароль) через консоль, либо сидя за компьютером, либо удаленно через ssh: .bash_profileвыполняется для настройки вашей оболочки до начальной командной строки. Но, если вы уже вошли в свою машину и открыли новое окно терминала (xterm) внутри Gnome или KDE, то .bashrcоно выполняется перед командной строкой окна. .bashrcтакже запускается, когда вы запускаете новый экземпляр bash, набирая /bin/bashв терминале.

Исключением из правил окна терминала является Mac.X Terminal.app, который запускает оболочку входа по умолчанию для каждого нового окна терминала, вызывая .bash_profileвместо .bashrc. Другие эмуляторы терминала GUI могут делать то же самое, но большинство этого не делают.

Подробнее здесь .

Paulecci
источник