it-swarm.com.de

Was ist der Unterschied zwischen interaktiven Shells, Login-Shells, Nicht-Login-Shell und ihren Anwendungsfällen?

Mögliches Duplikat:
nterschied zwischen Login-Shell und Nicht-Login-Shell?

Ich habe mir/etc/profile angesehen. bash.bashrc, um zu sehen, wie sie ausgeführt werden, und um festzustellen, dass einige von Nicht-Login-Shells ausgeführt werden, andere mit interaktiven Shells arbeiten usw.

Was sind die Unterschiede bei dieser Art von Shells, dh interaktiv und nicht interaktiv, Login & Nicht-Login usw.?

Die Frage mag ziemlich einfach sein, aber ich muss mich in erster Linie fragen, was eine Shell ist. Was ist eine Shell, welche Relevanz hat sie, wie verwenden Sie sie und warum existiert sie zunächst?

Update: Um die Absicht der Frage besser zu verstehen, muss ich neben den Definitionen auch die Anwendungsfälle für den einen oder anderen Shell-Typ verstehen. Es sind die Anwendungsfälle, die zum Verständnis beitragen, nicht nur Wörterbuchdefinitionen.

85
vfclists

Eine Shell ist der generische Name für jedes Programm, das Ihnen eine Textschnittstelle für die Interaktion mit dem Computer bietet. Sie geben einen Befehl ein und die Ausgabe wird auf dem Bildschirm angezeigt.

Viele Shells verfügen über Skriptfunktionen: Fügen Sie mehrere Befehle in ein Skript ein, und die Shell führt sie so aus, als ob sie über die Tastatur eingegeben würden. Die meisten Shells bieten zusätzliche Programmierkonstrukte, die die Skriptfunktion in eine Programmiersprache erweitern.

Auf den meisten Unix/Linux-Systemen sind mehrere Shells verfügbar: bash, csh, ksh, sh, tcsh, zsh, um nur einige zu nennen. Sie unterscheiden sich in den verschiedenen Optionen, die sie dem Benutzer zum Bearbeiten der Befehle bieten, sowie in der Komplexität und den Funktionen der Skriptsprache.

Interaktiv : Wie der Begriff schon sagt: Interaktiv bedeutet, dass die Befehle mit Benutzerinteraktion über die Tastatur ausgeführt werden. Z.B. Die Shell kann den Benutzer zur Eingabe von Eingaben auffordern.

Nicht interaktiv : Die Shell wird wahrscheinlich von einem automatisierten Prozess ausgeführt, sodass nicht davon ausgegangen werden kann, ob eine Eingabe angefordert werden kann oder ob jemand die Ausgabe sieht. Zum Beispiel ist es vielleicht am besten, die Ausgabe in eine Protokolldatei zu schreiben.

Login : Bedeutet, dass die Shell als Teil der Anmeldung des Benutzers am System ausgeführt wird. Wird normalerweise für jede Konfiguration verwendet, die ein Benutzer benötigt/möchte, um seine Arbeitsumgebung einzurichten.

Nicht angemeldet : Jede andere Shell, die vom Benutzer nach der Anmeldung ausgeführt wird oder die von einem automatisierten Prozess ausgeführt wird, der nicht an einen angemeldeten Benutzer gekoppelt ist.

98
Tonny

Es mag seltsam sein, für einige Leute, die noch nie einen Computer vom Internet getrennt hatten, zu erkennen, dass viele Antworten zu UNIX-Systemen bereits mitgeliefert wurden. Für e. B. man bash , Abschnitt "Aufruf":

Eine interaktive Shell wird ohne Argumente ohne Option und ohne die Option -c gestartet, deren Standardeingabe und Fehler beide mit Terminals verbunden sind (wie durch isatty (3) bestimmt), oder mit der Option -i gestartet. PS1 ist gesetzt und $ - enthält i, wenn bash interaktiv ist, sodass ein Shell-Skript oder eine Startdatei diesen Status testen können.

11
poige