Eine Shell wird gestartet, wenn Sie sich anmelden, sie wird jedoch auch von Programmen wie makeoder beim Ausführen eines Shell-Skripts oder beim Eingeben :shvon vioder beim Erstellen eines neuen Terminalfensters gestartet.
Ursprünglich wurde die Shell ~/.profilebeim Anmelden oder Ausführen eingelesen su. Mit diesem Skript können Sie beispielsweise ankündigen, ob Sie eine neue E-Mail erhalten haben, Ihre Lösch- und Kill-Zeichen anpassen sowie die Variablen TERM und PATH festlegen und exportieren. Beim Starten in fast jedem anderen Kontext wurde die Shell nicht gelesen ~/.profile, da die meisten dieser Vorgänge überflüssig wären. Es wurde erwartet, dass Sie alle wichtigen Shell-Variablen in die neue Shell exportiert haben.
Die Art und Weise, wie die Shell wusste, ob sie einlesen sollte, ~/.profilebestand darin, zu überprüfen, ob das erste Zeichen von argv[0]aka $0war '-'.
Zunächst cshwurden Aliase eingeführt. Aliase wurden nicht in die Umwelt exportiert. cshwurde entwickelt, um zwei verschiedene Initialisierungsskripte einzulesen. ~/.loginwurde nur gelesen, wenn ein Benutzer angemeldet war, und der Anhaltspunkt dafür war, wenn argv[0]mit begonnen wurde '-'. ~/.cshrcwurde jedes Mal gelesen, wenn die Shell gestartet wurde. Im Allgemeinen legte man Aliase in ~/.cshrcund alles andere in ~/.login. cshauch unterstützt ~/.logout, die in den meisten Fällen nur den Bildschirm gelöscht und ausgeführt fortune.
Andere Shells übernahmen die gleichen Funktionen. kshwürde einlesen ~/.kshrc, bashwürde einlesen ~/.bashrc, und dort würden Sie Ihre Aliasdefinitionen platzieren.
Um es kurz zu machen, die Anwendung, die eine Shell erzeugt, muss entscheiden, ob es sich um eine "Login-Shell" handelt, in welchem Fall es diese '-'am Anfang gibt, oder um eine reguläre Shell. In den meisten Fällen wird eine Shell, die interaktiv sein soll, als Anmeldeshell gestartet, und eine Shell dient nur zum Ausführen einiger Befehle, entweder als Argumente oder aus einem Skript, und beim Beenden handelt es sich um eine reguläre Shell.
Aber es hängt alles von der Laune der Anwendung ab, die die Shell startet.