Говорят, что настройки для оболочки без входа в файл .bashrc
и настройки оболочки для входа в файл .profile
.
Что на самом деле подразумевается под логином и без логина?
Пожалуйста, объясните, не используя технический жаргон, насколько возможно.
Если вы обычный пользователь Ubuntu Desktop, оболочка входа only - это ... ваш рабочий стол (вы вводите пароль для входа, верно;)? Ну, технически это оболочка входа в систему, которая запускает графический интерфейс, но это входит в жаргон. И да, он будет читать настройки в .profile
Единственный раз, когда вы (обычный пользователь), вероятно, увидите оболочку входа, которая выглядит как оболочка входа, если у вас есть возникли проблемы с рабочим столом, и вы переключаетесь на виртуальный терминал с помощью ярлыка Ctrl kbd> + Alt kbd> + F1 kbd>.
ssh
(или локальное соединение с ssh localhost
) bash -l
(или sh -l
) root
с sudo -i
sudo -u username -i
для другого не-118 пользователя 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]
, который начинается с HYPHEN-MINUS. Некоторые, такие как su или sudo (или zsh: см. Модификатор предварительной команды -
, описанный в разделе «Модификаторы PRECOMMAND» в man zshmisc
), по умолчанию этого не делают, но об этом можно сказать. У некоторых есть единственная возможность указать shell как логин, используя его аргумент (т.е. bash -l
): ssh с аргументом команды (который явно указывает ssh, что запускать на удаленном конце).
Обычно лучше сначала обратиться к документации программы, используемой для вызова оболочки, чтобы определить, будет ли оболочка входом в систему, а затем выполнить несколько тестов, чтобы определить, будет ли приложение запускать оболочку входа (например, добавив echo
до .profile
).