Существуют разные типы снарядов. Оболочка выполнения команд SSH - это неинтерактивная оболочка, тогда как обычная оболочка - это либо оболочка для входа, либо интерактивная оболочка. Описание следует из man bash:
Оболочка входа - это тот, чей первый символ аргумента
ноль - это -, или один начинается с опции --login.
Интерактивная оболочка запускается без опций
аргументы и без опции -c, чей стандартный ввод
и ошибка оба связаны с терминалами (как определено
по isatty (3)) или один из них начинается с опции -i. PS1 это
set и $ - включает i, если bash интерактивен, что позволяет
сценарий оболочки или файл запуска для проверки этого состояния.
В следующих параграфах описано, как bash выполняет свои
загрузочные файлы. Если какой-либо из файлов существует, но не может быть
читай, bash сообщает об ошибке. Тильды раскрыты в файле
имена, как описано ниже в разделе Расширение Тильды в
РАЗДЕЛЕНИЕ.
Когда bash вызывается как интерактивная оболочка входа или как
неинтерактивная оболочка с параметром --login, сначала
читает и выполняет команды из файла / etc / profile, если
этот файл существует. После прочтения этого файла, он ищет
~ / .bash_profile, ~ / .bash_login и ~ / .profile, в этом
порядок, а также читает и выполняет команды с первого
что существует и читаемо. Опция --noprofile может
использоваться, когда оболочка запущена, чтобы подавить это поведение
IOR.
При выходе из оболочки входа в систему bash читает и выполняет команды
из файла ~ / .bash_logout, если он существует.
Когда интерактивная оболочка, которая не является оболочкой входа
запущен, bash читает и выполняет команды из ~ / .bashrc,
если этот файл существует. Это может быть запрещено с помощью
опция --norc. Опция --rcfile file заставит bash
читать и выполнять команды из файла вместо
~ / .Bashrc.
Когда bash запущен неинтерактивно, для запуска оболочки
скрипт, например, он ищет переменную BASH_ENV в
окружающая среда, расширяет свою ценность, если она там появляется,
и использует расширенное значение в качестве имени файла для чтения
и выполнить. Bash ведет себя так, как будто следующая команда
были выполнены:
if [-n "$ BASH_ENV"]; затем . "$ BASH_ENV"; фи
но значение переменной PATH не используется для поиска
для имени файла.