Was meinst du mit interaktiver Shell?

25

UNIX: The Complete Reference, 2. Auflage von Kenneth H. Rosen et al.

Sie können nach der Anmeldung eine andere Shell starten, indem Sie den Namen der Shell als Befehl verwenden. Um beispielsweise die Korn-Shell zu starten, können Sie an der Eingabeaufforderung ksh eingeben. Diese Art von Shell ist keine Anmeldeshell, und Sie müssen sich nicht erneut anmelden, um sie zu verwenden. Es handelt sich jedoch weiterhin um eine interaktive Shell. Dies bedeutet, dass Sie mit der Shell interagieren, indem Sie Befehle eingeben (im Gegensatz zur Verwendung der Shell für Führen Sie ein Skript aus (siehe Kapitel 20). Die Instanzen der Shell, die in einem Terminalfenster ausgeführt werden, wenn Sie eine grafische Oberfläche verwenden, sind auch interaktive Shells ohne Anmeldung. Wenn Sie eine Shell ohne Anmeldung starten, werden die Dateien ".profile", ".bash_profile" oder ".login" (oder ".logout") nicht gelesen, die zweite Shell-Konfigurationsdatei (z. B. ".bashrc") wird jedoch trotzdem gelesen. Dies bedeutet, dass Sie Änderungen an Ihrem testen können.

Ich habe die obigen Zeilen durchgesehen und verstehe nicht, was es mit interaktiver Shell meint. Stimmt es, dass .profile nicht gelesen wird, wenn ich ein Terminal verwende?

Was bedeutet es außerdem, wenn Sie sagen, dass bourne keine interaktive Shell ist, während bash / csh eine interaktive Shell ist?

münchen
quelle

Antworten:

27

Eine interaktive Shell ist einfach ein beliebiger Shell-Prozess, mit dem Sie Befehle eingeben und die Ausgabe dieser Befehle zurückerhalten. Das heißt, eine Shell, mit der Sie interagieren.

Ihre Login-Shell ist also interaktiv, ebenso wie alle anderen Shells, die Sie manuell starten, wie im in Ihrer Frage zitierten Auszug beschrieben. Wenn Sie dagegen ein Shell-Skript ausführen, wird eine nicht interaktive Shell gestartet, die die Befehle im Skript ausführt und nach Beendigung des Skripts beendet.

Die Bourne-Shell kann wie bashoder als interaktive Shell verwendet werden tcsh. Tatsächlich verwenden viele Systeme wie FreeBSD shals Standardbenutzershell. Moderne Muscheln mögen bash, zsh, tcsh, etc. haben viele Features , die Bourne - Shell hat nicht, dass sie bequemer und bequem für die interaktive Nutzung (Befehlsverlauf, Abschluss, usw.) machen.

Interaktive Shells ohne Anmeldung (dh Shells, die Sie manuell über eine andere Shell oder durch Öffnen eines Terminalfensters starten) lesen Ihre .loginoder .profile-Dateien nicht. Diese werden nur von Anmeldeshells (vom loginSystemprozess oder von Ihrem X-Display-Manager gestartete Shells) gelesen und ausgeführt , sodass die darin enthaltenen Befehle und Einstellungen zu Beginn Ihrer Anmeldesitzung nur einmal angewendet werden. Also, wenn Sie ein Terminal zu starten, die Shell , dass es laicht nicht für Sie Ihre Login - Dateien liest ( .loginfür c-Stil Muscheln, .profilefür bourne Stil Schalen), aber es funktioniert lesen Sie die .cshrc, .bashrcetc - Dateien.

D_Bye
quelle
Es ist möglich, eine Shell als nicht interaktive Anmeldeshell auszuführen.
JW013
Richtig, aber möglicherweise verwirrend!
D_Bye
ksh ist auch eine moderne Shell :-) Siehe www2.research.att.com/sw/download und navigieren Sie über das Menü am linken Rand zu AST-> ksh-> overview. Mehrmals im Jahr erscheint eine Neuerscheinung von David Korn und Glen Fowler. Allen viel Glück.
Shellter
1
@ Shellter - ja, in der Tat. Aber es ist keines, das ich jemals benutzt habe, und ich musste aufhören, irgendwo Muscheln aufzuzählen! ;-)
D_Bye
Sie haben gesagt, The Bourne shell can be used as an interactive shell, just like bash or tcsh. ist nicht Bourne Shell das gleiche wie bash?
Mr.Web