Назад | Перейти на главную страницу

В чем разница между "Логином" и "Интерактивной" оболочкой bash

В чем разница между «логином» и «интерактивной» оболочкой bash? Я процитировал Википедию ниже, но может ли кто-нибудь дать лучший ответ?

РЕДАКТИРОВАТЬ: это вики сообщества, поэтому, возможно, вместо того, чтобы голосовать за закрытие, вы могли бы привести примеры того, какие ситуации требуют какого типа $ SHELL

Сценарии запуска

Когда Bash запускается, он выполняет команды в различных сценариях.

Когда Bash вызывается как интерактивная оболочка входа, он сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После чтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первого, существующего и доступного для чтения.

Когда оболочка входа закрывается, Bash читает и выполняет команды из файла ~ / .bash_logout, если он существует.

Когда запускается интерактивная оболочка, которая не является оболочкой входа, Bash читает и выполняет команды из ~ / .bashrc, если этот файл существует. Это можно запретить с помощью параметра --norc. Параметр --rcfile file заставит Bash читать и выполнять команды из файла вместо ~ / .bashrc.

В файлах профиля вашей оболочки входа вы можете настроить некоторые вещи, которые вы будете использовать во время сеанса, и которые нужно сделать только один раз. Некоторые идеи:

  • создайте временный файл, содержащий IP-адрес, с которого вы подключились, позже вы можете включить его в некоторые сценарии, устанавливающие правила брандмауэра.
  • запустите ssh-agent, запросите ключи SSH и сохраните переменные среды агента SSH в файле.
  • если это машина с ограничениями, и ваши коллеги хотят знать о логинах друг друга, напишите (1) сообщения, информирующие их о вашем входе в систему.

В файлах оболочки без входа (.bashrc) вам следует настроить свою оболочку:

  • Необычная подсказка
  • установить псевдонимы
  • установить параметры истории
  • определить пользовательские функции оболочки
  • экспортировать переменные среды (возможно, PAGER, EDITOR, если общесистемные настройки - отстой)
  • загрузить переменные ssh-agent, сохраненные в .bash_profile

Обычно вы включаете .bashrc из .bash_profile со следующим. Затем оболочка входа получает все ваши настройки, и .bash_profile файл не должен дублировать вещи, которые уже находятся в .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc