Parece que no entiendo la regla de Bash para crear una subshell. Pensé que los paréntesis siempre crean una subshell, que se ejecuta como su propio proceso.
Sin embargo, este no parece ser el caso. En el fragmento de código A (a continuación), el segundo sleepcomando no se ejecuta en un shell separado (como lo determina pstreeotro terminal). Sin embargo, en el fragmento de código B, el segundo sleepcomando se ejecuta en un shell separado. La única diferencia entre los fragmentos es que el segundo fragmento tiene dos comandos entre paréntesis.
¿Podría alguien explicar la regla de cuándo se crean subcapas?
CÓDIGO SNIPPET A:
sleep 5
(
sleep 5
)
CÓDIGO SNIPPET B:
sleep 5
(
x=1
sleep 5
)
forky se crea un proceso hijo (para ejecutar comandos externos) llamandofork + exec. Pero su primer párrafo sugiere que tambiénfork + execse requiere subshell. ¿Qué me estoy equivocando aquí?