Strony podręcznika bash wyjaśniają, czym są powłoki logowania i interaktywne:
Powłoka logowania to taka, której pierwszym znakiem argumentu zero jest - lub rozpoczęty z opcją --login.
Powłoka interaktywna to taka, która została uruchomiona bez argumentów nie będących opcjami i bez opcji -c, której standardowe wejście i błąd są podłączone do terminali (jak określa isatty (3)), lub jedna została uruchomiona z opcją -i. PS1 jest ustawione, a $ - obejmuje i, jeśli bash jest interaktywny, pozwalając skryptowi powłoki lub plikowi startowemu przetestować ten stan.
Myślę, że to oznacza, że możemy mieć 4 różne rodzaje pocisków:
- Interaktywne powłoki logowania,
- Nieinteraktywne powłoki logowania,
- Interaktywne powłoki niezalogowane,
- Nieinteraktywne powłoki niezalogowane
Ale dlaczego w ogóle mamy powłoki interaktywne / nieinteraktywne i powłoki do logowania / bez logowania? Dlaczego odmiana? Co byśmy stracili, gdybyśmy mieli tylko jeden rodzaj pocisku?
Również podczas próby ustalenia, czy działam w powłoce logowania echo $-
, wyświetla:
himBH
Niektóre z tych flag wyjaśnione są tutaj , ale h
, H
i m
nie są wyjaśnione. Czy jest miejsce, które opisuje wszystkie te flagi?
źródło