O bug de texto invisível no bash é um bug ou um recurso?

8

Em todas as distribuições Linux que usei nos últimos 10 anos, houve o seguinte inconveniente: Você executa um programa no terminal usando o bash. Depois que o programa é parado ou interrompido, o que você digita às vezes parece invisível. Você pode então digitar o comando "reset" e a tela é limpa e o cursor fica visível novamente.

Por causa desse bug, sempre mudei o shell para zsh sempre que faço login em um novo terminal pela primeira vez. No zsh, o erro de texto invisível nunca acontece. Desde que o bug já existe há mais de 10 anos, comecei a suspeitar que é um recurso do bash. Então, alguém pode me dizer para que serve?

Além disso, onde está localizada a página inicial do bash / rastreador de erros. O Bash.org parece ser sobre "TI bashing", e o canal #bash irc também. Por que a maioria das distribuições Linux inclui um shell que é tão difícil de fornecer feedback, quando várias alternativas são pelo menos tão boas?


fonte
1
Então ... qual parte da sua pergunta está relacionada à programação novamente?
Ignacio Vazquez-Abrams
2
Por favor, me encaminhe para o local correto para perguntar. A ironia é que uma pesquisa no Google em "bash shell bug tracker" atualmente leva a esta página.
Isso é o que acontece quando você catarquivos binários ...
Yab

Respostas:

11

Isso significa apenas que no zsh você não pode fazer algo como:

stty -echo     #turn off echoing what you type
stty echo      #turn on echoing
reset          #reset terminal to the default state

No bash, o comando acima funciona conforme o esperado - desative o eco do comando. Apenas tentei no zsh - não funciona. Quem tem um bug? ;)

É possível desativar o eco com as seqüências ESC; portanto, se o seu programa enviar aleatoriamente sequências binárias para o terminal {ou quando você pressiona CTRL- \ algum programa orientado a tela), ele se comporta às vezes stty -echoe você precisa reset. Não é um bug - simplesmente é como os terminais (e emuladores de terminal) funcionam.

O que é estranho, porque no zsh stty -echonão funciona.

jm666
fonte
2
No zsh, você pode ttyctl -fproibir as alterações nos modos de terminal e ttyctl -upermiti-las.