Während ein Befehl ausführt, führt die Shell normalerweise Folgendes aus:
* wartet: Die Hülle tritt in einen "Warte" -Staat ein. Es pausiert seine eigene Ausführung und verarbeitet keine anderen Befehle aus der Eingabe, bis der aktuell ausgeführte Befehl abgeschlossen ist. Dies ist das Standardverhalten für die meisten Befehle.
* E/A -Management (falls zutreffend): Die Shell kann die Eingangs- und Ausgabeumleitung für den Befehl verarbeiten. Wenn der Befehl `<`, `>`, `>>`, `|` oder andere Umleitungsoperatoren verwendet, richtet die Shell die entsprechenden Rohre und Dateideskriptoren ein, bevor der Befehl gestartet wird. Es verwaltet den Datenfluss zwischen dem Befehl und seinen Eingängen/Ausgängen.
* Signalhandhabung: Die Shell verwaltet Signale (wie Interrupts, Sigint, gesendet von Strg+C). Wenn ein Signal empfangen wird, während ein Befehl ausgeführt wird, kann die Shell das Signal entweder an den Lauf des laufenden Befehls weiterleiten oder es je nach Konfiguration und dem spezifischen Signal selbst verarbeiten.
* Prozessmanagement: Die Shell erstellt einen neuen Vorgang, damit der Befehl einleiten kann. Dadurch wird die Ausführung des Befehls von den Shells getrennt und verhindern, dass die Stürze im Befehl die Hülle selbst beeinflussen. Die Shell verwaltet diesen Kinderprozess, bis sie endet.
* Keine andere Befehlsverarbeitung: Es interpretiert oder führt keine weiteren Eingaben aus, bis der aktuell ausgeführte Befehl beendet ist (es sei denn, es handelt sich um einen Hintergrundvorgang, siehe unten).
Hintergrundprozesse: Die Ausnahme ist, wenn ein Befehl im Hintergrund ausgeführt wird (mit `&`). In diesem Fall wartet die Shell * nicht *. Es druckt die Prozess -ID (PID) des Hintergrundvorgangs und setzt sofort die Akzeptanz und Verarbeitung neuer Befehle vom Benutzer fort. Es wird jedoch weiterhin diesen Hintergrundprozess verwaltet:Überprüfung des Status, des Handhabung von Signalen und der Reinigung, wenn er endet.
Zusammenfassend lässt sich sagen, dass die Kernaktion wartet. Hinter den Kulissen steckt jedoch erhebliche Aktivitäten mit E/A, Signalen und Prozessmanagement, um die ordnungsgemäße Ausführung und Integration des Befehls in die Umgebung der Shell zu gewährleisten.