Jaka jest różnica między powłoką bash „Login” i „Interactive”


50

Jaka jest różnica między powłoką bash „Login” i „Interactive”? Cytowałem poniżej Wikipedię, ale czy ktoś może dać lepszą odpowiedź?

EDYCJA: To jest wiki społeczności, więc może zamiast głosować na zamknięcie, możesz podać przykłady sytuacji, w których wymagany jest typ SHELL

Skrypty startowe

Kiedy Bash się uruchamia, wykonuje polecenia w różnych skryptach.

Gdy Bash jest wywoływany jako interaktywna powłoka logowania, najpierw czyta i wykonuje polecenia z pliku / etc / profile, jeśli ten plik istnieje. Po odczytaniu tego pliku szuka ~ / .bash_profile, ~ / .bash_login i ~ / .profile, w tej kolejności, i odczytuje i wykonuje polecenia z pierwszego, który istnieje i jest czytelny.

Po wyjściu z powłoki logowania Bash odczytuje i wykonuje polecenia z pliku ~ / .bash_logout, jeśli istnieje.

Po uruchomieniu interaktywnej powłoki, która nie jest powłoką logowania, Bash odczytuje i wykonuje polecenia z ~ / .bashrc, jeśli ten plik istnieje. Można temu zapobiec, używając opcji --norc. Opcja --rcfile pliku zmusi Bash do odczytu i wykonywania poleceń z pliku zamiast ~ / .bashrc.


Zredagowałem pytanie, aby lepiej pasowało do częściowo wyskalowanych reguł witryny. Nie sądzę, że kiedykolwiek zrozumiem chęć usunięcia użytecznych informacji ...
Gareth

7
Dlaczego ludzie głosują na to pytanie? Wydaje mi się całkowicie uzasadniony?
duffbeer703

2
Ugh, wyjmij odpowiedź ze swojego pytania i opublikuj jako odpowiedź. Można odpowiedzieć na własne pytanie.
derobert

2
To bardzo ważne pytanie, ponieważ rozróżnienie jest mylące. Zauważ na przykład, że kiedy logujesz się do środowiska graficznego przez xdm i uruchamiasz xterm, otrzymujesz interaktywną powłokę i pliki startowe powłoki logowania nie są uruchamiane.
pjc50

Odpowiedzi:


16

W plikach profilu powłoki logowania możesz skonfigurować pewne rzeczy, których będziesz używać podczas sesji i które trzeba zrobić tylko raz. Jakieś pomysły:

  • utwórz plik tymczasowy zawierający adres IP, z którego się połączyłeś, później możesz dołączyć go do niektórych skryptów ustalających reguły zapory.
  • uruchom ssh-agent, poproś o klucze SSH i zapisz zmienne środowiskowe agenta SSH w pliku.
  • jeśli jest to ograniczona maszyna, a twoi współpracownicy chcą się wzajemnie logować, napisz (1) wiadomości informujące o twoim loginie.

W plikach powłoki niezalogowanej ( .bashrc) powinieneś skonfigurować swoją powłokę:

  • Fantazyjny monit
  • ustawić aliasy
  • ustaw opcje historii
  • zdefiniuj niestandardowe funkcje powłoki
  • eksportuj zmienne środowiskowe (może PAGER, EDYTOR, jeśli ustawienia systemowe są do niczego)
  • wczytaj zmienne ssh-agent zapisane w .bash_profile

Zazwyczaj, byś to .bashrcod .bash_profilez następujących czynności. Następnie powłoka logowania pobiera wszystkie twoje dostosowania, a .bash_profileplik nie musi powielać rzeczy, które już są .bashrc.

[[ -f ~/.bashrc ]] && . ~/.bashrc

3
Czy powłoka logowania jest pierwszą, która zaczyna się, gdy jesteś świeżo na komputerze? Wszystkie inne powłoki, które otworzysz po tym, mogą być interaktywne. Powłoka działająca z crona? Nie wydaje się interaktywny, ale czy jest to login? Co jeśli nie ma Cię na komputerze? Oto pytania, na które nie udzielono odpowiedzi
François Beausoleil

4
Teraz TO jest odpowiedź, którą rozumiem: linuxquestions.org/questions/linux-general-1/…
François Beausoleil
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.