В чем разница между «логином» и «интерактивной» оболочкой bash? Я процитировал Википедию ниже, но может ли кто-нибудь дать лучший ответ?
РЕДАКТИРОВАТЬ: это вики сообщества, поэтому, возможно, вместо того, чтобы голосовать за закрытие, вы могли бы привести примеры того, какие ситуации требуют какого типа $ SHELL
Сценарии запуска
Когда Bash запускается, он выполняет команды в различных сценариях.
Когда Bash вызывается как интерактивная оболочка входа, он сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После чтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первого, существующего и доступного для чтения.
Когда оболочка входа закрывается, Bash читает и выполняет команды из файла ~ / .bash_logout, если он существует.
Когда запускается интерактивная оболочка, которая не является оболочкой входа, Bash читает и выполняет команды из ~ / .bashrc, если этот файл существует. Это можно запретить с помощью параметра --norc. Параметр --rcfile file заставит Bash читать и выполнять команды из файла вместо ~ / .bashrc.
В файлах профиля вашей оболочки входа вы можете настроить некоторые вещи, которые вы будете использовать во время сеанса, и которые нужно сделать только один раз. Некоторые идеи:
В файлах оболочки без входа (.bashrc
) вам следует настроить свою оболочку:
.bash_profile
Обычно вы включаете .bashrc
из .bash_profile
со следующим. Затем оболочка входа получает все ваши настройки, и .bash_profile
файл не должен дублировать вещи, которые уже находятся в .bashrc
.
[[ -f ~/.bashrc ]] && . ~/.bashrc