Existem esses dois nomes: um subshell e um shell filho .
Sim, um processo filho será iniciado por qualquer um destes:
sh -c 'echo "Hello"'
( echo "hello" )
echo "$(echo "hello")
echo "hello" | cat
Todos são equivalentes e compartilham o mesmo nome? Todos compartilham as mesmas propriedades?
O POSIX possui esta definição :
Um ambiente de execução de shell consiste em ....
Mas o último parágrafo do link acima tem o seguinte:
Um ambiente de subcasca deve ser criado como uma duplicata do ambiente de shell, exceto que os traps de sinal que não estão sendo ignorados devem ser configurados para a ação padrão.
E especialmente:
A substituição de comandos, os comandos agrupados entre parênteses e as listas assíncronas devem ser executadas em um ambiente de subcasca. Além disso, cada comando de um pipeline de comandos múltiplos está em um ambiente de subcasca; ....
O sh -c 'echo "Hello"'
não está incluído lá, isso também deve ser chamado de subshell?