Это содержимое запаса ~/.profile
, в котором были удалены мои 13.10 (закомментированные строки ):
если [-n "$BASH _ВЕРСИЯ" ]; тогда если [-f "$HOME/.bashrc" ]; тогда. "$HOME/.bashrc" фи фи если [-d "$HOME/bin" ] ; тогда PATH="$HOME/bin :$PATH" фи
Это унаследовано от Debian, но почему Canonical решила сохранить его? Насколько я знаю, это не стандартный *nix-способ, и я видел различные системы, в которых этого не происходило, поэтому я предполагаю, что у них должна быть веская причина для этого. Это может привести к непредвиденному поведению при запуске оболочек входа в систему (, например, при подключении по ssh к машине, например ), где пользователь не ожидает ~/.bashrc
.
Единственное преимущество, о котором я могу думать, это не путать пользователя со многими файлами запуска и позволить им редактировать .bashrc
в одиночку и читать это независимо от типа оболочки. Это, однако, сомнительное преимущество, поскольку часто полезно иметь разные настройки для входа в систему и для интерактивных оболочек, и это мешает вам это сделать. Кроме того, оболочки входа в систему очень часто не запускаются в графическом окружении, что может привести к ошибкам, предупреждениям и проблемам (о боже! )в зависимости от того, что вы установили в этих файлах.
Итак, почему Ubuntu делает это, что мне не хватает?
Это стандартное поведение Ubuntu, ~/.bashrc
— это уровень пользователя -для -интерактивного -файла запуска оболочки. Когда вы открываете терминал, в основном вы запускаете не -логин, интерактивную оболочку который читает ~/.bashrc
, а содержимое ~/.bashrc
извлекается и экспортируется в вашу текущую среду оболочки. Это помогает получить все его пользовательские переменные оболочки и функции в текущей оболочке. Также вы можете найти такие строки
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
для получения пользовательских псевдонимов в текущей среде оболочки.
Это также важно для обеспечения хорошего пользовательского опыта. Например, учетные данные прокси-сервера можно хранить в .bashrc
, если только они не будут получены ни одним из терминальных приложений (. а именно , ping
, wget
, curl
, lynx
и т. д. )будут работать правильно. Или вам нужно предоставлять учетные данные прокси-сервера каждый раз, когда вы открываете терминал.
Кроме того, Ubuntu по умолчанию .bashrc
содержит множество удобных для пользователя псевдонимов (для ls
и grep
для распечатки раскрашенного вывода ), много новых определений для различных переменных оболочки, которые улучшают взаимодействие с пользователем.
Но в случае вашего входа по ssh или входа в виртуальную консоль вы в основном получаете интерактивную оболочку входа. Там файл запуска оболочки ~/.profile
. Следовательно, если вы не используете источник ~/.bashrc
, вы пропустите все эти полезные настройки в своем .bashrc
. Вот почему источник Ubuntu по умолчанию ~/.profile
~/.bashrc
Случай, которого следует избегать
~/.profile
внутри ~/.bashrc
в то же время, когда ~/.bashrc
поступает из ~/.profile
. Это создаст бесконечный цикл ситуации, и в результате ваше приглашение терминала будет приостановлено, если вы не нажмете Ctrl + C . В такой ситуации, если вы поместите строку в свой ~/.bashrc
set -x
Затем вы могли видеть, что дескриптор файла останавливается, когда вы открываете терминал.