Tenho três pequenas dúvidas sobre o modo em que o terminal está quando o bash está escutando/esperando meus comandos:
- Quando o bash está esperando meu comando, ele está sendo executado em um terminal que está no modo canônico ou não canônico?
- Se for modo não canônico, isso significa imediatamente que o bash assume a responsabilidade pelo eco, ou o bash deve chamar adicionalmente
stty -echo
depois destty -icanon
? Em outras palavras, o terminal pode estar em modo não canônico e ter eco "automático" pelo driver, essas duas coisas (modo não canônico e eco "automático") não são mutuamente exclusivas? - O bash primeiro retorna o terminal ao modo canônico antes de executar um comando e entregar o controle a ele, e ele retorna ao modo não canônico novamente quando o comando é concluído?
É um modo não canônico
Se fosse o modo canônico, ele não seria capaz de interpretar as teclas tab e ^r interativamente.
Provavelmente há detalhes na
libreadline
documentação.Eu iniciei
stty
(em um terminal diferente) no terminal que hospeda minha sessão bash e obtive este resultado:então canon e echo estão desligados
Ao executar um comando (neste caso "sleep 100"), ele redefine o estado do terminal.