O script abaixo funciona perfeitamente com bash
, mas não com sudo bash
ou sh
. Pressionar enter
ou ^C
não funcionará. Apenas ^\
e ^Z
trabalho, mas não com sudo bash
.
printf '#!/bin/sh\nread var\n' > myscript
chmod +x myscript
sh -c "timeout -k 1 10 ./myscript"
# it does work when `bash` is used instead of `sh`
Eu sei que posso usar read -t 10
. (Isso não está disponível sh
e funciona apenas se eu parar de usar de timeout
qualquer maneira.) Mas o motivo pelo qual estou usando timeout
não tem nada a ver com read
. Eu preciso disso para (outras coisas em) myscript
. Não preciso de uma solução alternativa, mas de uma explicação para a coisa bash
/ sudo bash
e espero uma solução para timeout
e read
.
Ainda não sei por que isso acontece, mas tem algo a ver com como diferentes shells executam e tratam os sinais. Aparentemente, parece que esta é uma solução:
O mesmo com
sudo bash
:man timeout
tem isso explicado assim:Não tenho certeza do que tudo isso significa, nem quais são as consequências, mas talvez isso ajude você ou outra pessoa explique.