Een shell is een basisinterface voor het invoeren van opdrachten op een Linux-systeem. Hiermee kunt u direct een opdracht invoeren of een bestand (script) opgeven dat een reeks opdrachten bevat die moeten worden uitgevoerd. Shells zijn georganiseerd in een hiërarchie en elke shell kan een nieuwe shell maken. De nieuwe shell wordt beschouwd als een onderliggend proces - een subschaal - van de bovenliggende shell die het maakt.
Standaard is een subshell afhankelijk van het bovenliggende element in die zin dat als het bovenliggende proces wordt beëindigd, de subshell ook wordt beëindigd. Elke output wordt doorgegeven van de subshell naar de bovenliggende shell.
Hoe een subschaal te maken
In een Bash-shellscript maakt u een subshell aan met behulp van de haakjesnotatie:
In het voorbeeld is de while-lus tussen haakjes geplaatst, waardoor deze wordt uitgevoerd in een subshell van de shell waarin het scriptbestand wordt uitgevoerd.
Een subshell op de achtergrond uitvoeren
Tenzij u opgeeft dat de subshell op de achtergrond moet worden uitgevoerd, wacht de bovenliggende shell tot de subshell is voltooid voordat de rest van het script wordt voortgezet. Als u echter subshells parallel wilt uitvoeren, voert u ze op de achtergrond uit, wat wordt bereikt met het ampersand-teken dat volgt op de subshell-expressie, zoals hier wordt weergegeven:
Meerdere subshells parallel laten werken
Als u meerdere subshells maakt als achtergrondprocessen, kunt u taken parallel uitvoeren. Meestal gebruikt het besturingssysteem verschillende processors of kernen voor elk proces en subproces, ervan uitgaande dat er minstens evenveel processors of kernen zijn als er processen zijn. Anders worden taken toegewezen aan dezelfde processors of kernen. In dat geval schakelt de processor of kern voortdurend tussen de toegewezen taken totdat de taken zijn voltooid. Het volgende voorbeeld heeft twee subprocessen. De eerste telt van 1 tot 99 en de tweede van 1000 tot 1099.
Gebruik de wachtinstructie om het bovenliggende proces te laten wachten totdat de subprocessen zijn voltooid voordat u verder gaat met de rest van het script:
Gebruikt voor Subshells
Subschalen zijn handig wanneer opdrachten moeten worden uitgevoerd in een bepaalde omgeving of directory. Als elke opdracht in een andere subshell wordt uitgevoerd, is er geen risico dat variabele instellingen worden verward. Na voltooiing hoeven de instellingen en de huidige map niet te worden hersteld, omdat de omgeving van het bovenliggende proces niet wordt beïnvloed door een van de subprocessen.
Subschalen kunnen in functiedefinities worden gebruikt, zodat ze meerdere keren kunnen worden uitgevoerd met verschillende parameters.




