Ответ 1
Интерактивная оболочка запускается без аргументов без опций, если не указано -s, без указания опции -c и чей вход и выход ошибки подключены к клеммам (как определено по isatty (3)) или запустили с опцией -i.
Интерактивная оболочка обычно читает и пишет пользователям Терминал.
Оболочка входа - это оболочка, в которую вы входите. Вы можете распознать оболочку входа в список 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 не будут читать файлы запуска.