echo
não é portátil; o bash
builtin echo
difere daquele do sistema /bin/echo
binary. Despojado das complicações da chamada at
e outras coisas que observamos
$ sh -c 'echo -e "echo hi"'
-e echo hi
$ bash -c 'echo -e "echo hi"'
echo hi
$ bash -c '/bin/echo -e "echo hi"'
-e echo hi
$
O system
em C ++ (ou também C) chama sh
, o que (provavelmente) não tem echo
embutido e, portanto, o sistema /bin/echo
é usado e -e
é impresso como está, porque esse sistema echo
não tem ideia do que é -e
. Mesma história quando via bash
o sistema /bin/echo
é usado. Você pode considerar em vez de printf
para melhor portabilidade, ou para evitar sh
de chamadas estranhas e, em vez disso, apenas fork / exec e gravar em at
diretamente.