Говорят, что настройки для оболочки без входа в систему должны быть в файле .bashrc
, а настройки оболочки для входа в систему — в файле .profile
.
Что на самом деле подразумевается под оболочками входа и входа без -?
Пожалуйста, объясните, не используя технический жаргон, насколько это возможно.
Если вы обычный пользователь Ubuntu Desktop, единственная оболочка входа в систему — это... ваш рабочий стол (вы вводите пароль для входа, правильно; )? Ну, технически это оболочка входа в систему, которая запускает графический интерфейс, но это слишком жаргонно. И да, он прочитает настройки в .profile
Единственный раз, когда вы (обычный пользователь ), вероятно, увидите оболочку входа в систему, которая выглядит как оболочка входа, если у вас возникли проблемы с рабочим столом и вы переключились на виртуальный терминал с Ctrl + Alt + F1 сочетание клавиш.
ssh
(или локальное соединение с ssh localhost
)bash -l
(или sh -l
)root
оболочки входа в систему с помощью sudo -i
sudo -u username -i
для другого не -root
пользователь root
пользователь с su - username
(и их пароль )sudo login
для переключения пользователя Не думаю, что правильный ответ можно дать без «технического жаргона». Поскольку этот вопрос является первым, который появляется в Google по запросу «что такое оболочка входа в систему», я привожу более правильный ответ ниже :
Оболочка входа — это просто оболочка, которая была указана как оболочка входа. Это не означает оболочку, которая появляется после входа в систему, хотя обычно приложение, которое регистрирует вас, сообщает оболочке, что она запускается как оболочка входа. Существуют следующие способы сообщить оболочке, что она должна быть логином :
-l
или --login
при условии, что она знает его (Я не знаю ни одной оболочки, которая не знает -l
, но --login
поддерживается только несколькими оболочками ). argv[0]
, установленным на -{some_string}
(то есть с HYPHEN -MINUS перед обычной argv[0]
или какой-либо другой строкой ). Это то, что делают ssh и su :su просто запускает исполняемый файл с -su
как argv[0]
(привет всем, кто думает, что argv[0]
как-то связан с текущим исполняемым файлом с именем ), ssh запускает zsh с -zsh
, когда пользователь установил /bin/zsh
в качестве своей оболочки. Логичность оболочки не имеет абсолютно никакого отношения к тому, что кто-то спрашивает у вас пароль или выполняет какую-либо другую процедуру аутентификации. Некоторые программы, такие как ssh или login (, или некоторые эмуляторы терминалов, такие как urxvt ), запускают оболочки как логин, используя argv[0]
, который начинается с ДЕФИС -МИНУС. Некоторые, такие как su или sudo (или zsh :, см. -
модификатор предварительной команды, описанный в разделе МОДИФИКАТОРЫ ПРЕДКОМАНД в man zshmisc
)не делайте этого по умолчанию, но можно так сказать. У некоторых есть единственная возможность сообщить оболочке, что она является логином, используя ее аргумент (, т.е. bash -l
):ssh с аргументом команды (, который явно указывает ssh, что запускать на удаленном конце ).
Как правило, лучше сначала ознакомиться с документацией программы, используемой для вызова оболочки, чтобы определить, будет ли оболочка использоваться для входа в систему, а затем выполнить некоторые тесты, чтобы определить, будет ли приложение запускать оболочку входа (, например. добавив echo
к .profile
).