Подтвердить что ты не робот

В чем разница между оболочкой входа и интерактивной оболочкой?

Что такое login shell и interactive shell, а что есть .bash_profile и .bashrc?

4b9b3361

Ответ 1

  Интерактивная оболочка запускается без аргументов без опций, если не указано -s, без указания опции -c и чей вход и выход ошибки подключены к клеммам (как определено по isatty (3)) или запустили с опцией -i.

Интерактивная оболочка обычно читает и пишет пользователям Терминал.

[Руководство по gnu bash]

Оболочка входа - это оболочка, в которую вы входите. Вы можете распознать оболочку входа в список ps -f, в начале названия программы будет стоять дефис, например:

root      3561  3553  0 09:38 pts/0    00:00:00 -bash
qa        7327  3432  0 10:46 pts/1    00:00:00 -bash

Интерактивная оболочка - это оболочка, которая читает команды из стандартного -i nput, обычно это терминал.

Например, если вы войдете в bash с использованием xterm или эмулятора терминала, такого как putty, тогда сессия будет как оболочкой входа, так и интерактивной. Затем, если вы наберете bash, вы войдете в интерактивную оболочку, но это не оболочка входа в систему.

Если запускается сценарий оболочки (файл, содержащий команды оболочки), то он не является ни оболочкой входа в систему, ни интерактивной.

Загрузочные файлы очень удобны в bash:

Когда вызывается оболочка bash для входа в систему, источник /etc/profile (выполняется в текущей среде). После этого три файла проверяются на наличие. Проверки этих файлов выполняются в следующем порядке:

если существует /etc/profile, отправьте (запустите) его
если существует ~/.bash_profile, отправьте (запустите) его
если существует ~/.bash_login, отправьте (запустите) его
если существует ~/.profile, отправьте (запустите) его

Как только совпадение найдено, другие файлы игнорируются, даже если они существуют. Файл /etc/bashrc может использоваться как файлами ~/.bash_profile, так и файлами ~/.bashrc. Это будет означать, что файл /etc/bashrc создается на всех интерактивных вызовах bash, независимо от того, является ли он оболочкой для входа или не входа в систему.

Таким образом, файл .bashrc также запускается каждый раз, когда вы запрашиваете новую интерактивную оболочку. Это не включает сценарий оболочки. Обычно переменные, псевдонимы или функции помещаются в этот файл.

Сценарии оболочки Bash читают другой файл, если это необходимо. Если пользователь определяет (обычно в своем собственном .bash_profile) переменную BASH_ENV, которая содержит имя файла, сценарии прочтут это. Если эта переменная не установлена (и не экспортирована), сценарии bash не будут читать файлы запуска.

Ответ 2

Поскольку вы, вероятно, знаете, что такое "оболочка" и использует его, ваш вопрос касается только разницы между оболочкой входа и всем остальным...

Оболочка для входа отличается от любой другой оболочки тем фактом, что при запуске загружается один или несколько начальных сценариев установки (ресурсов), обычно называемых с именем "profile". в котором определены базовые настройки, которые выводятся для впоследствии открытых оболочек (поэтому их нужно только определить один раз).