Ist der unsichtbare Textfehler in Bash ein Fehler oder eine Funktion?

8

Bei jeder einzelnen Linux-Distribution, die ich in den letzten 10 Jahren verwendet habe, gab es folgende Unannehmlichkeiten: Sie führen ein Programm im Terminal mit bash aus. Nachdem das Programm gestoppt oder unterbrochen wurde, erscheint alles, was Sie eingeben, manchmal unsichtbar. Sie können dann den Befehl "Zurücksetzen" eingeben und der Bildschirm wird gelöscht und der Cursor ist wieder sichtbar.

Aufgrund dieses Fehlers habe ich die Shell immer in zsh geändert, wenn ich mich zum ersten Mal bei einem neuen Terminal anmelde. In zsh tritt der unsichtbare Textfehler nie auf. Da der Bug nun seit über 10 Jahren vorhanden ist, habe ich den Verdacht, dass es sich um ein Feature von Bash handelt. Kann mir jemand sagen, wozu es gut ist?

Wo befindet sich die Bash-Homepage / der Bug-Tracker tatsächlich? Bei Bash.org scheint es um "IT-Bashing" zu gehen, ebenso wie beim # bash irc-Kanal. Warum enthalten die meisten Linux-Distributionen eine Shell, auf die man nur schwer Feedback geben kann, wenn mehrere Alternativen mindestens genauso gut sind?


quelle
1
Also ... welcher Teil Ihrer Frage ist wieder programmierbezogen?
Ignacio Vazquez-Abrams
2
Bitte leiten Sie mich an den richtigen Ort, um zu fragen. Die Ironie ist, dass eine Google-Suche auf "Bash Shell Bug Tracker" derzeit zu dieser Seite führt.
Das ist, was passiert, wenn Sie catBinärdateien ...
Yab

Antworten:

11

Das ist nur gemein als in zsh kann man so etwas nicht machen:

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

In bash funktioniert der obige Befehl wie erwartet - deaktivieren Sie das Echo des Befehls. Nur in zsh ausprobiert - funktioniert nicht. Wer hat einen Fehler? ;)

Das Ausschalten des Echos ist mit ESC-Sequenzen möglich. Wenn Ihr Programm also zufällig Binärsequenzen an das Terminal sendet (oder wenn Sie STRG- \ ein bildschirmorientiertes Programm drücken), verhält es sich manchmal wie stty -echound Sie müssen resetes. Es ist kein Fehler - einfach so funktionieren Terminals (und Terminalemulatoren).

Was ist seltsam, warum in zsh stty -echonicht funktioniert.

jm666
quelle
2
In zsh können Sie ttyctl -fÄnderungen an den Terminalmodi nicht ttyctl -uzulassen und zulassen.