Каковы функциональные различия между .profile
, .bash_profile
и .bashrc
файлы?
.bash_profile
и .bashrc
специфичны для bash
, в то время как .profile
читается многими оболочками при отсутствии их собственных файлов конфигурации, специфичных для оболочки. (.profile
использовался исходной оболочкой Борна.) .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, и другим расширениям, применяемым к этой конкретной оболочке.
.профиль
.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
будет загружен.
Согласно странице руководства bash, .bash_profile
выполняется для оболочек входа, а .bashrc
выполняется для интерактивных оболочек без входа в систему.
Итак, что такое оболочка для входа или без входа?
Когда вы входите в систему (введите имя пользователя и пароль) через консоль, сидя на машине или удаленно через ssh: .bash_profile
выполняется для настройки вашей оболочки перед начальной командной строкой. Но если вы уже вошли в систему и открыли новое окно терминала (xterm) внутри Gnome или KDE, тогда .bashrc
выполняется перед командной строкой окна. .bashrc
также запускается, когда вы запускаете новый экземпляр bash, набрав /bin/bash
в терминале.
Исключением из правил окна терминала является приложение Mac OS X Terminal.app, которое по умолчанию запускает оболочку входа в систему для каждого нового окна терминала, вызывая .bash_profile
вместо того .bashrc
. Другие эмуляторы терминала GUI могут делать то же самое, но большинство из них не делают этого.
Больше Вот.