Оболочки могут быть входом в систему как выполненными текстовой консолью и не войти в систему как выполненные Терминалом Gnome. Почему эта сложность необходима? Почему оболочка входа в систему не может следовать тем же правилам как невход в систему?
Во-первых, взгляните на этот ответ для понимания различий между оболочками входа в систему и невхода в систему. В основном они читают различные файлы инициализации. Теперь, много дистрибутивов — включая Debian и, следовательно, Ubuntu — на самом деле двигают то, что Вы описываете. На этих дистрибутивах, значении по умолчанию ~/.profile
или ~/.bash_profile
файлы содержат что-то как следующее:
[[ -f ~/.bashrc ]] && . ~/.bashrc
Это означает, что вход в систему окружает — которые читают ~/.profile
— будет также читать ~/.bashrc
, то, чтобы заставлять их вести себя как невход в систему интерактивные оболочки. Или, скорее то, чтобы заставлять их иметь ту же установку как невход в систему интерактивные оболочки в дополнение к тому, что настраивается для оболочек входа в систему.
Существуют, однако, совершенно серьезные основания иметь эти два ведут себя по-другому. Например, очень распространено иметь машину, к которой Вы получаете доступ или путем присаживания перед ним и выполнения графической сессии или удаленно через ssh. В более позднем случае Вы выполнили бы оболочку входа в систему и в первом, Вы будете открывать терминалы, выполняющие оболочки невхода в систему.
В таких случаях можно хотеть, чтобы необолочки графического пользовательского интерфейса вели себя по-другому. Например, много лет, у меня была эта команда в моем ~/.bashrc
файл для отключения слышимого звонка:
xset b off
Начиная с моего .bashrc
был только считан интерактивным, оболочками невхода в систему, и они никогда не выполнялись графически, это был простой способ отключить звонок. Однако начиная с моего дистрибутива, переключенного на наличие ~/.profile
источник ~/.bashrc
, команда также выполнялась, когда я входил в систему через ssh
, в среде не-GUI и, с тех пор xset
требует выполнения X
сессия, это произвело ошибку.
В более общем плане часто полезно иметь оболочки входа в систему, ведут себя по-другому, так как они обычно используются для другой цели. Могут быть переменные, Вы только хотите набор в одном типе а не другом, или регистрирует, Вы только хотите чтение. По общему признанию, менее полезно разделить два на домашнем компьютере отдельного пользователя, но полагать, что Linux много лет, прежде всего, нацеливался на рынок серверов и наличие многопользовательских систем, очень нормально. В таких случаях добавленная сложность стоит того, так как это позволяет Вам иметь мелкомодульный контроль над тем, как различные типы оболочек ведут себя.