Оболочка запускается при входе, но он также начал программы , как 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, и те были , где бы разместить определения псевдонимов.
Короче говоря, приложение, которое порождает оболочку, решает, должна ли она быть «оболочкой входа в систему», в этом случае она есть '-'в начале, или обычной оболочкой. В большинстве случаев оболочка, которая будет интерактивной, запускается как оболочка входа в систему, а оболочка, предназначенная просто для запуска некоторых команд, либо в качестве аргументов, либо из сценария, а затем выход - обычная оболочка.
Но все зависит от каприза приложения, запускающего оболочку.