Powłoka jest uruchamiana podczas logowania, ale jest również uruchamiana przez programy takie jak make
lub podczas uruchamiania skryptu powłoki, podczas pisania :sh
do vi
lub tworzenia nowego okna terminala.
Oryginalnie powłoka wczytywała się ~/.profile
po zalogowaniu lub uruchomieniu su
. Ten skrypt służy do ogłaszania, czy masz nowy e-mail, dostosowywania znaków kasowania i zabijania oraz ustawiania i eksportowania zmiennych TERM i PATH. Po uruchomieniu w prawie każdym innym kontekście powłoka nie czytała ~/.profile
, ponieważ wykonanie większości tych czynności byłoby zbędne. Oczekiwano, że wyeksportowano wszystkie ważne zmienne powłoki do nowej powłoki.
Sposób powłoka wiedział, czy odczytywane ~/.profile
było sprawdzenie, czy pierwszy znak argv[0]
, znany $0
był '-'
.
Począwszy od csh
, wprowadzono aliasy. Aliasy nie zostały wyeksportowane do środowiska. csh
został zaprojektowany do odczytu w dwóch różnych skryptach inicjujących. ~/.login
został odczytany tylko wtedy, gdy użytkownik się zalogował, a wskazówką, aby to zrobić, było argv[0]
rozpoczęcie '-'
. ~/.cshrc
był czytany przy każdym uruchomieniu powłoki. Ogólnie, umieszcza się aliasy ~/.cshrc
i wszystko inne w ~/.login
. csh
obsługiwane również ~/.logout
, co w większości przypadków po prostu wyczyściło ekran i uruchomiło się fortune
.
Inne pociski przyjęły te same funkcje. ksh
wczytywałoby ~/.kshrc
, bash
wczytywałoby się ~/.bashrc
, a tam byłyby miejsca, w których należy umieścić definicje aliasów.
Krótko mówiąc, aplikacja, która spawnuje powłokę, decyduje, czy powinna to być „powłoka logowania”, w takim przypadku '-'
na początku, czy zwykła powłoka. W większości przypadków powłoka, która ma być interaktywna, jest uruchamiana jako powłoka logowania, a powłoka służy tylko do uruchamiania niektórych poleceń, jako argumentów lub skryptu, a następnie wyjście jest zwykłą powłoką.
Ale wszystko zależy od kaprysu aplikacji, która uruchamia powłokę.