A resposta curta: sim, você vai ter que usar o Expect.
Quanto a por que está falhando: com base em seu comportamento, bash -i
ativa readline
(mesmo com --noediting
), que é bastante prejudicado com pipes. Ele também parece estar definindo modos de terminal (incluindo o modo sem bloqueio) via stdout
em vez de stdin
, o que significa que você perde o comportamento esperado da maioria dos caracteres de controle. (Não é, no entanto, ler o tty diretamente.)
Nota lateral: ^C
envia SIGINT
, não SIGTERM
. Ambos estão, no entanto, presos no modo interativo ( -i
); SIGHUP
trabalha para matá-lo.