Это стандартное поведение Ubuntu, ~/.bashrc - это начальный файл для каждого интерактивного запуска оболочки. Когда вы открываете терминал в основном, вы запускаете не-login, интерактивную оболочку, которая читает ~/.bashrc и содержимое ~/.bashrc, получает исходный код и экспортируется в текущую среду оболочки. Это помогает получить все свои пользовательские переменные и функции оболочки в текущей оболочке. Также вы можете найти строки, подобные этому
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
, чтобы получить переменные оболочки в текущей среде оболочки.
Это важно для обеспечения хорошего пользовательского опыта также. Например, можно хранить учетные данные прокси-сервера в .bashrc, если только он не получит источники ни одного из терминальных приложений (например, ping, wget, curl, lynx и т. Д.) Будет работать правильно. Или вы должны предоставлять учетные данные прокси каждый раз, когда вы открываете терминал.
Кроме того, по умолчанию .bashrc Ubuntu содержит много удобных для пользователя псевдонимов (для ls и grep для печати цветного вывода), много новых определения для разных переменных оболочки, что увеличивает пользовательский опыт.
Но в случае вашего входа в систему ssh или функции вы в основном получаете интерактивную оболочку входа. Там файл инициализации оболочки ~/.profile. Следовательно, если вы не используете ~/.bashrc, вы пропустите все эти полезные настройки в своем .bashrc. Поэтому исходный ~/.profile источник Ubuntu ~/.profile ~/.bashrc
ssh login
не должен выставлять ~/.profile внутри ~/.bashrc время, когда ~/.bashrc поступает из ~/.profile. Он создаст бесконечный цикл ситуации, и в результате ваше приглашение на терминал будет приостановлено, если вы не нажмете Ctrl + C. В такой ситуации, если вы поместите строку в свой ~/.bashrc set -xТогда вы можете видеть, что дескриптор файла останавливается при открытии терминала.