Оболочка запускается при входе, но он также начал программы , как make
, или при выполнении сценария оболочки, или при вводе :sh
в vi
или при создании нового окна терминала.
Первоначально оболочка читала, ~/.profile
когда вы входили в систему или работали su
. Этот скрипт будет делать такие вещи, как объявление о том, есть ли у вас новая электронная почта, настройка символов стирания и уничтожения, а также установка и экспорт переменных TERM и PATH. При запуске практически в любом другом контексте оболочка не читала ~/.profile
, потому что выполнение большинства этих действий было бы излишним. Вы должны были экспортировать любые важные переменные оболочки в новую оболочку.
Путь оболочки , знал ли читать в ~/.profile
том , чтобы проверить , является ли первый символ argv[0]
ака $0
был '-'
.
Начиная с csh
псевдонимов были введены. Псевдонимы не экспортировались в окружающую среду. csh
был разработан для чтения в двух разных сценариях инициализации. ~/.login
был прочитан только тогда, когда пользователь вошел в систему, и сигнал, чтобы сделать это, был, если argv[0]
начал с '-'
. ~/.cshrc
читался каждый раз при запуске оболочки. В общем, один помещал псевдонимы, ~/.cshrc
а все остальное в ~/.login
. csh
также поддерживается ~/.logout
, который в большинстве случаев просто очистил экран и запустился fortune
.
Другие оболочки приняли те же функции. ksh
будет читать ~/.kshrc
, bash
будет читать ~/.bashrc
, и те были , где бы разместить определения псевдонимов.
Короче говоря, приложение, которое порождает оболочку, решает, должна ли она быть «оболочкой входа в систему», в этом случае она есть '-'
в начале, или обычной оболочкой. В большинстве случаев оболочка, которая будет интерактивной, запускается как оболочка входа в систему, а оболочка, предназначенная просто для запуска некоторых команд, либо в качестве аргументов, либо из сценария, а затем выход - обычная оболочка.
Но все зависит от каприза приложения, запускающего оболочку.