was meinst du mit interaktiver Shell?

was meinst du mit interaktiver Shell?

UNIX: Das vollständige Nachschlagewerk, zweite Ausgabe 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 in der Eingabeaufforderung ksh eingeben. Diese Art von Shell ist keine Login-Shell und Sie müssen sich nicht erneut anmelden, um sie zu verwenden. Es handelt sich jedoch immer noch um eine interaktive Shell, d. h. Sie interagieren mit der Shell, indem Sie Befehle eingeben (im Gegensatz zur Verwendung der Shell zum Ausführen eines Skripts, wie in Kapitel 20 beschrieben). Die Instanzen der Shell, die in einem Terminalfenster ausgeführt werden, wenn Sie eine grafische Benutzeroberfläche verwenden, sind ebenfalls interaktive Nicht-Login-Shells. Wenn Sie eine Nicht-Login-Shell starten, liest sie nicht Ihre .profile-, .bash_profile- oder .login-Datei (oder Ihre .logout-Datei), aber sie liest dennoch die zweite Shell-Konfigurationsdatei (z. B. .bashrc). Dies bedeutet, dass Sie Änderungen an Ihrer .bashrc-Datei testen können, indem Sie eine andere Instanz der Shell starten. Wenn Sie jedoch Änderungen an Ihrer .profile- oder .login-Datei testen, müssen Sie sich abmelden und dann wieder anmelden, um die Ergebnisse anzuzeigen.

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

Was bedeutet es außerdem, wenn Sie sagen, dass Bourne keine interaktive Shell ist, während Bash/CSH eine interaktive Shell ist?

Antwort1

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 in dem Auszug beschrieben, den Sie in Ihrer Frage zitiert haben. Wenn Sie dagegen ein Shell-Skript ausführen, wird eine nicht interaktive Shell gestartet, die die Befehle im Skript ausführt und dann beendet wird, wenn das Skript beendet ist.

bashDie Bourne-Shell kann wie oder als interaktive Shell verwendet werden tcsh. Tatsächlich verwenden viele Systeme, wie z. B. FreeBSD, shals Standardbenutzer-Shell. Moderne Shells wie bash, zsh, tcsh, usw. haben viele Funktionen, die die Bourne-Shell nicht hat, was sie für die interaktive Verwendung komfortabler und bequemer macht (Befehlsverlauf, Vervollständigung usw.).

Interaktive Nicht-Login-Shells (das heißt Shells, die Sie manuell von einer anderen Shell oder durch Öffnen eines Terminalfensters starten) lesen Ihre - .loginoder .profile-Dateien nicht. Diese werden nur von Login-Shells gelesen und ausgeführt (Shells, die vom loginSystemprozess oder von Ihrem X-Display-Manager gestartet werden), sodass die darin enthaltenen Befehle und Einstellungen nur einmal angewendet werden, nämlich zu Beginn Ihrer Login-Sitzung. Wenn Sie also ein Terminal starten, liest die Shell, die es für Sie startet, Ihre Login-Dateien nicht ( .loginfür C-Style-Shells, .profilefür Bourne-Style-Shells), aber sie liest die .cshrc-, .bashrcetc-Dateien.

verwandte Informationen