Існують різні типи оболонок. Оболонка виконання команд SSH - це неінтерактивна оболонка, тоді як ваша звичайна оболонка - або оболонка для входу, або інтерактивна оболонка. Опис випливає з man bash:
Оболонка для входу - це та, чий перший символ аргументується
нуль - це - або починається з опції --login.
Інтерактивна оболонка - це запускається без необов'язкових варіантів
аргументи і без параметра -c, стандартний вхід якого
і помилка обоє підключені до клем (як визначено)
by isatty (3)), або той, що розпочався з опції -i. PS1 є
set і $ - включає i, якщо bash є інтерактивним, що дозволяє a
скрипт оболонки або файл запуску для перевірки цього стану.
У наступних параграфах описано, як bash виконує його
файли запуску. Якщо будь-який з файлів існує, але не може бути
читати, bash повідомляє про помилку. Тильди розширені у файлі
імена, як описано нижче в розділі Розширення Tilde в
Розширення розділу.
Коли bash викликається як інтерактивна оболонка входу, або як
неінтерактивна оболонка з опцією --login, спочатку
читає і виконує команди з файлу / etc / profile, якщо
цей файл існує. Прочитавши цей файл, він шукає
~ / .bash_profile, ~ / .bash_login та ~ / .profile, в цьому
впорядковує, і читає та виконує команди з першого
що існує і читається. Опція --noprofile може
використовувати, коли оболонка починає гальмувати цю поведінку
ior.
Коли оболонка входу виходить, bash читає та виконує команди
з файлу ~ / .bash_logout, якщо він існує.
Коли інтерактивна оболонка, яка не є оболонкою для входу, є
запущено, bash читає та виконує команди з ~ / .bashrc,
якщо цей файл існує. Це може бути пригнічено за допомогою
--norc варіант. Параметр файлу --rcfile змусить баш
читати та виконувати команди з файлу замість
~ / .bashrc.
Коли bash запускається неінтерактивно, для запуску оболонки
наприклад, скрипт шукає змінну BASH_ENV в
навколишнє середовище, розширює свою цінність, якщо вона з’являється там,
і використовує розширене значення як ім'я файлу для читання
і виконати. Bash поводиться так, ніби наступна команда
були виконані:
if [-n "$ BASH_ENV"]; тоді . "$ BASH_ENV"; фі
але значення змінної PATH не використовується для пошуку
для імені файлу.