Je semble mal comprendre la règle Bash pour créer un sous-shell. Je pensais que les parenthèses créent toujours un sous-shell, qui fonctionne comme son propre processus.
Cependant, cela ne semble pas être le cas. Dans l'extrait de code A (ci-dessous), la deuxième sleepcommande ne s'exécute pas dans un shell séparé (comme déterminé par pstreedans un autre terminal). Cependant, dans le Code Snippet B, la deuxième sleepcommande ne fonctionne dans une coque séparée. La seule différence entre les extraits est que le deuxième extrait a deux commandes entre parenthèses.
Quelqu'un pourrait-il expliquer la règle de création des sous-coquilles?
CODE SNIPPET A:
sleep 5
(
sleep 5
)
CODE SNIPPET B:
sleep 5
(
x=1
sleep 5
)
forket le processus enfant est créé (pour exécuter des commandes externes) en appelantfork + exec. Mais votre premier paragraphe suggère que celafork + execest également nécessaire pour le sous-shell. Qu'est-ce que je me trompe ici?