Ci sono questi due nomi: una subshell e una child-shell .
Sì, un processo figlio verrà avviato da uno di questi:
sh -c 'echo "Hello"'
( echo "hello" )
echo "$(echo "hello")
echo "hello" | cat
Sono tutti equivalenti e condividono lo stesso nome? Tutti condividono le stesse proprietà?
POSIX ha questa definizione :
Un ambiente di esecuzione della shell è costituito da ....
Ma l'ultimo paragrafo del link sopra ha questo:
Un ambiente subshell deve essere creato come duplicato dell'ambiente shell, tranne per il fatto che le trap di segnale che non vengono ignorate devono essere impostate sull'azione predefinita.
E specialmente:
La sostituzione dei comandi, i comandi raggruppati con parentesi e gli elenchi asincroni devono essere eseguiti in un ambiente subshell. Inoltre, ogni comando di una pipeline multi-comando si trova in un ambiente subshell; ....
Non sh -c 'echo "Hello"'
è incluso lì, dovrebbe essere chiamato anche una subshell?