Diferenças de sub-shell entre bash e ksh

Eu sempre acreditei que um sub-shell não era um processo filho, mas outro ambiente de shell no mesmo processo.

Eu uso um conjunto básico de built-ins:

(echo "Hello";read)

Em outro terminal:

ps -t pts/0
  PID TTY          TIME CMD
20104 pts/0    00:00:00 ksh

Portanto, nenhum processo filho no kornShell (ksh).

Digite bash, parece se comportar de maneira diferente, dado o mesmo comando:

  PID TTY          TIME CMD
 3458 pts/0    00:00:00 bash
20067 pts/0    00:00:00 bash

Então, um processo filho no bash.
A partir da leitura das páginas man do bash, é óbvio que outro processo é criado para um sub-shell, no entanto ele falsifica $, que é sneeky.

Essa diferença entre bash e ksh é esperada ou estou lendo os sintomas incorretamente?

Edit: informações adicionais: Runningstrace -f no bash e ksh no Linux mostra que chama bashclone duas vezes para o comando de amostra (ele não chamafork). Então o bash pode estar usando threads (eu tenteiltrace mas core esvaziado!). KornShell não chama nemfork, vforknemclone.

questionAnswers(3)

yourAnswerToTheQuestion