Il y a ces deux noms: un sous - shell et un shell enfant .
Oui, un processus enfant sera lancé par l'un des éléments suivants:
sh -c 'echo "Hello"'
( echo "hello" )
echo "$(echo "hello")
echo "hello" | cat
Sont-ils tous équivalents et partagent-ils le même nom? Tous partagent-ils les mêmes propriétés?
POSIX a cette définition :
Un environnement d'exécution de shell se compose de ....
Mais le dernier paragraphe du lien ci-dessus a ceci:
Un environnement de sous-shell doit être créé en tant que doublon de l'environnement de shell, sauf que les interruptions de signal qui ne sont pas ignorées doivent être définies sur l'action par défaut.
Et spécialement:
La substitution de commandes, les commandes regroupées entre parenthèses et les listes asynchrones doivent être exécutées dans un environnement de sous-shell. De plus, chaque commande d'un pipeline multi-commandes se trouve dans un environnement sous-shell; ....
Le sh -c 'echo "Hello"'
n'est pas inclus là-bas, cela devrait-il aussi être appelé un sous-shell?