2013-08-12 15 views

Odpowiedz

49

Powłoka interaktywna to taka, którą uruchomiono bez argumentów nieopcyjnych, chyba -s jest określony, bez podania opcji -c i którego wejście i wyjście błędu są podłączone do zacisków (jak ustalono przez isatty (3)) lub jedną rozpoczętą z opcją -i.

Powłoka interaktywna zazwyczaj czyta i zapisuje na terminalu użytkownika użytkownika.

[gnu bash manual]

logowanie shell jest powłoką gdzie zalogować. Można rozpoznać powłokę logowania z ps -f aukcji, będzie to miało myślnik na początku nazwy programu, na przykład:

root  3561 3553 0 09:38 pts/0 00:00:00 -bash 
qa  7327 3432 0 10:46 pts/1 00:00:00 -bash 

interaktywna powłoka to taki, który odczytuje polecenia z jego standardowego wejścia, zwykle terminal.

Na przykład, jeśli zalogujesz się na bash przy użyciu emulatora terminala lub terminala, takiego jak putty, sesja jest zarówno powłoką logowania, jak i interaktywną. Jeśli następnie wpiszesz bash, wpisz interaktywną powłokę, ale nie jest to powłoka logowania.

Jeśli uruchamiany jest skrypt powłoki (plik zawierający polecenia powłoki), to nie jest to ani powłoka logowania, ani interaktywna.

start-up plików są bardzo tailorable w bash:

Gdy powłoka logowania bash jest wywoływany, a następnie /etc/profile pochodzi (wykonywana w bieżącym środowisku). Następnie trzy pliki są sprawdzane pod kątem istnienia. Kontrole dla tych plików są wykonywane w następującej kolejności:

jeśli /etc/profile istnieje, źródło (RUN) to
jeżeli ~/.bash_profile exists, źródło (run) to
jeśli ~/.bash_login exists, źródło (run) to
jeśli ~/.profile exists, źródło (uruchom) to

Po znalezieniu dopasowania pozostałe pliki są ignorowane, nawet jeśli istnieją. Plik /etc/bashrc może być używany zarówno przez pliki ~/.bash_profile, jak i ~/.bashrc. Oznaczałoby to, że plik /etc/bashrc pochodzi ze wszystkich interaktywnych wywołań bash, niezależnie od tego, czy jest to powłoka logowania czy też nie.

Plik .bashrc jest również uruchamiany za każdym razem, gdy użytkownik zażąda nowej powłoki interaktywnej . Nie obejmuje to skryptu powłoki. Normalnie zmienne, aliasy lub funkcje są umieszczane w tym pliku.

Skrypty powłoki Bash czytają inny plik, jeśli są odpowiednio poinstruowane. Jeśli użytkownik zdefiniuje (zwykle we własnej wartości .bash_profile) zmienną BASH_ENV, która zawiera nazwę pliku, skrypty ją odczytają. Jeśli ta zmienna nie zostanie ustawiona (i wyeksportowana), skrypty bash nie będą czytać żadnych plików startowych.

+1

Jestem naprawdę wdzięczny za cenny komentarz. Dziękuję Ci ! – caesar

+2

Zobacz 'man bash' w sekcji' INVOCATION' na plikach, które są ładowane podczas uruchamiania, informacje tam zawarte mogą być bardziej przejrzyste. – sjas

+0

Czy jest możliwe, że powłoka logowania nie jest interaktywna? Brzmi niemożliwe. – CMCDragonkai

0

Ponieważ zapewne wiesz co to jest „skorupa” jest i korzysta z niej pytanie jest kierowana tylko różnicę między powłoki logowania i wszystko inne ...

Logowanie do powłoki różni się od każdej innej powłoce przez fakt, że jeden lub więcej początkowych skryptów instalacyjnych (zasobów) jest ładowanych podczas uruchamiania, zwykle nazwanych przez "profil" w ich nazwie. tam zdefiniowane są podstawowe ustawienia, które są wyprowadzane do później otwartych powłok (tak, że muszą być zdefiniowane tylko raz).

Powiązane problemy