co rozumiesz przez interaktywną powłokę?


25

UNIX: The Complete Reference, Second Edition Kenneth H. Rosen i in.

Możesz uruchomić inną powłokę po zalogowaniu, używając nazwy powłoki jako polecenia; na przykład, aby uruchomić powłokę Korna, możesz wpisać ksh w wierszu polecenia. Ten rodzaj powłoki nie jest powłoką logowania i nie trzeba się ponownie logować, aby z niej korzystać, ale nadal jest to powłoka interaktywna, co oznacza, że ​​użytkownik wchodzi w interakcję z powłoką, wpisując polecenia (w przeciwieństwie do używania powłoki do uruchom skrypt, jak omówiono w rozdziale 20). Instancje powłoki, które działają w oknie terminala, gdy korzystasz z interfejsu graficznego, są również interaktywnymi powłokami nie zalogowanymi. Po uruchomieniu powłoki niezalogowanej nie odczytuje pliku .profile, .bash_profile ani .login (lub pliku .logout), ale nadal odczytuje drugi plik konfiguracyjny powłoki (np. .Bashrc). Oznacza to, że możesz przetestować zmiany w swoim.

Przechodziłem powyżej linii i nie rozumiem, co to znaczy interaktywna powłoka. Czy to prawda, że ​​.profile nie jest odczytywany, jeśli używam terminala?

Co to znaczy, kiedy mówisz, że Bourne nie jest interaktywną powłoką, podczas gdy bash / csh jest interaktywną powłoką?

Odpowiedzi:


27

Powłoka interaktywna to po prostu dowolny proces powłoki używany do wpisywania poleceń i uzyskiwania danych wyjściowych z tych poleceń. To znaczy powłoka, z którą wchodzisz w interakcje.

Zatem powłoka logowania jest interaktywna, podobnie jak wszystkie inne powłoki uruchamiane ręcznie, zgodnie z opisem we fragmencie cytowanym w pytaniu. Natomiast po uruchomieniu skryptu powłoki uruchamiana jest nieinteraktywna powłoka, która uruchamia polecenia w skrypcie, a następnie kończy działanie po zakończeniu skryptu.

Powłokę Bourne'a można wykorzystać jako interaktywną powłokę, podobnie jak bashlub tcsh. W rzeczywistości wiele systemów, takich jak FreeBSD, używa shjako domyślnej powłoki użytkownika. Nowoczesne pociski podoba bash, zsh, tcshitp mają wiele cech, które Bourne shell nie ma, które czynią je bardziej komfortowe i wygodne do użytku interaktywnego (historia poleceń, zakończenia, etc).

Interaktywne powłoki niezwiązane z logowaniem (czyli powłoki uruchamiane ręcznie z innej powłoki lub przez otwarcie okna terminala) nie odczytują plików .loginani .profileplików użytkownika. Są one odczytywane i wykonywane tylko przez powłoki logowania (powłoki uruchamiane przez loginproces systemowy lub menedżera wyświetlania X), więc zawarte w nich polecenia i ustawienia są stosowane tylko raz, na początku sesji logowania. Tak więc, po uruchomieniu terminala, powłoka że ikra dla ciebie nie czyta plików login ( .logindla powłok w stylu C, .profiledla Powłoka Bourne'a stylu), ale robi przeczytać .cshrc, .bashrcetc plików.


Możliwe jest uruchomienie powłoki jako nieinteraktywnej powłoki logowania.
jw013

To prawda, ale potencjalnie mylące!
D_Bye

ksh jest również nowoczesną powłoką :-) Zobacz www2.research.att.com/sw/download i użyj menu na lewym marginesie, aby przejść do AST-> ksh-> przegląd. Nowe wydawnictwo wychodzi kilka razy w roku od Davida Korna i Glen Fowler. Powodzenia wszystkim.
shellter

1
@shellter - tak, rzeczywiście. Ale nigdy tego nie użyłem i musiałem gdzieś przestać wyliczać pociski! ;-)
D_Bye

Powiedziałeś, że The Bourne shell can be used as an interactive shell, just like bash or tcsh. Czy to nie skorupa Bourne'a jest taka sama jak bash?
Mr.Web
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.