| Terwijl een opdracht wordt uitgevoerd, voert de shell doorgaans het volgende uit:
* Wacht: De shell komt in een "wacht"-status. Het pauzeert zijn eigen uitvoering en verwerkt geen andere opdrachten van de invoer totdat het momenteel lopende commando is voltooid. Dit is het standaardgedrag voor de meeste opdrachten.
* I/O-beheer (indien van toepassing): De shell kan de invoer- en uitvoeromleiding voor de opdracht afhandelen. Als het commando `<`, `>`, `>>`, `|` of andere omleidingsoperatoren gebruikt, stelt de shell de juiste pipelines en bestandsdescriptors in voordat het commando wordt gestart. Het beheert de gegevensstroom tussen de opdracht en de in-/uitgangen ervan.
* Signaalverwerking: De shell beheert signalen (zoals interrupts, SIGINT, verzonden door Ctrl+C). Als een signaal wordt ontvangen terwijl een commando actief is, kan de shell het signaal doorsturen naar het actieve commando of het zelf afhandelen, afhankelijk van de configuratie en het specifieke signaal.
* Procesbeheer: De shell creëert een nieuw proces waarin het commando moet worden uitgevoerd. Dit scheidt de uitvoering van het commando van die van de shell, waardoor wordt voorkomen dat crashes in het commando de shell zelf beïnvloeden. De shell beheert dit onderliggende proces totdat het wordt beëindigd.
* Geen andere opdrachtverwerking: Er wordt geen verdere invoer geïnterpreteerd of uitgevoerd totdat de huidige opdracht is voltooid (tenzij het een achtergrondproces is, zie hieronder).
Achtergrondprocessen: De uitzondering is wanneer een opdracht op de achtergrond wordt uitgevoerd (met `&`). In dit geval wacht de shell *niet*. Het drukt de proces-ID (PID) van het achtergrondproces af en hervat onmiddellijk het accepteren en verwerken van nieuwe opdrachten van de gebruiker. Het beheert echter nog steeds dat achtergrondproces:het controleert de status ervan, verwerkt signalen en ruimt op wanneer het wordt beëindigd.
Kortom, de kernactie wacht. Achter de schermen is er echter aanzienlijke activiteit op het gebied van I/O, signalen en procesbeheer om de juiste uitvoering en integratie van de opdracht binnen de shell-omgeving te garanderen. |