Il bug di testo invisibile in bash è un bug o una funzione?


8

Su ogni singola distribuzione di Linux che ho usato negli ultimi 10 anni ci sono stati i seguenti inconvenienti: esegui un programma nel terminale usando bash. Dopo che il programma è stato arrestato o interrotto, qualsiasi cosa digiti a volte appare invisibile. È quindi possibile immettere il comando "reset" e lo schermo viene cancellato e il cursore è nuovamente visibile.

A causa di questo bug, ho sempre cambiato la shell in zsh ogni volta che accedo per la prima volta a un nuovo terminale. In zsh il bug di testo invisibile non si verifica mai. Da quando ormai il bug esiste da oltre 10 anni, ho iniziato a sospettare che sia una caratteristica di bash. Qualcuno può dirmi a cosa serve?

Inoltre, dove si trova effettivamente la home page di bash / localizzatore di bug. Bash.org sembra riguardare "l'IT bashing", così come il canale #bash irc. Perché la maggior parte delle distribuzioni di Linux include una shell a cui è così difficile dare un feedback, quando diverse alternative sono almeno altrettanto buone?

bash  shell 

1
Quindi ... quale parte della tua domanda è di nuovo legata alla programmazione?
Ignacio Vazquez-Abrams,

2
Ti prego di indirizzarmi nel posto giusto per chiedere. L'ironia è che una ricerca su Google "tracker bug tracker shell" attualmente conduce a questa pagina.

Ecco cosa succede quando si catfile binari ...
Yab,

Risposte:


11

Questo è solo cattivo che in zsh non puoi fare qualcosa del genere:

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

In bash, il comando sopra funziona come previsto: disattiva l'eco del comando. Appena provato in zsh - non funziona. Chi ha un bug? ;)

Disattivare l'eco è possibile ottenere con le sequenze ESC, quindi se il tuo programma invia casualmente sequenze binarie al terminale, {o quando fai CTRL- \ qualche programma orientato allo schermo), a volte si comporta come stty -echoe devi resetfarlo. Non è un bug - semplicemente è come funzionano i terminali (e gli emulatori di terminali).

Ciò che è strano, perché in zsh stty -echonon funziona.


2
In zsh, è possibile ttyctl -fimpedire le modifiche alle modalità del terminale e ttyctl -uconsentirle.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.