Na verdade, parece haver uma otimização no bash.
Vamos criar um script sleep20s
:
#! /bin/bash
sleep 20
Para evitar ambiguidades, vamos iniciar um shell ksh.
Com este comando: bash -c "./sleep20s"
, você recebe:
ksh
sleep20s
sleep
Ooops, onde está o bash? Mas saiba se fazemos algo que requer o intérprete bash, como chamar o mesmo comando duas vezes: bash -c "./sleep20s;./sleep20s"
, então você obtém:
ksh
bash
sleep20s
sleep
E o bash está de volta. Então o bash poderia ser inteligente e usar um exec
para iniciar o script filho nos casos triviais.