problema gnome-terminal relacionado à configuração tty

1

Estou enfrentando um problema estranho, adicionarei uma foto já que é melhor explicar o que está acontecendo

Como você pode ver. Depois de usar git log e sair (pressionando q ou Q ou: q ou ^ C), não posso usar mais comandos.

Depois de googlar um pouco eu vim para o comando stty sane , que parece consertar o meu terminal. Mas eu não posso dizer por que ou como ele conserta o gnome-terminal.

Tanto quanto eu posso ver, antes e depois de corrigi-lo stty -a mostra o mesmo resultado.

Alguma ideia ou sugestão sobre como começar a depurá-lo?

Estou usando o terminal gnome para o GNOME 3.22.2 usando a versão 0.46.2 do VTE + GNUTLS

EDITAR:

Graças à resposta, dei uma segunda olhada nas duas configurações e posso ver essas diferenças

chris@Gentoo ~ $ diff stty-bad stty-good 
4c4
< werase = ^W; lnext = <undef>; discard = ^O; min = 1; time = 0;
---
> werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
6c6
< -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl 
ixon -ixoff
---
> -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl 
ixon -ixoff
9c9
< isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -
tostop -echoprt
---
> isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop 
-echoprt

Esta ainda é uma lista longa para checar, eu irei ler o máximo possível dessas opções, mas isso deixa a resposta ... como faz stty sane corrigir o problema e < em> o que está causando isso, pois git log não é o problema real. Eu tentei com git --no-pager log e depois de um tempo imprimindo commits, eu pressiono ^ C e o mesmo acontece ...

EDIT 2:

Ok, depois de alternar cada opção, a raiz parece ser a variável -echo . Mas isso me deixa apenas uma pergunta. Por que o git log ou ^C altera a variável echo padrão. Onde posso encontrar a raiz? é idiota? less (pager do git log)? ou gnome-terminal? ou mesmo stty?

    
por Christopher Díaz Riveros 16.10.2017 / 00:36

1 resposta

1

Ou seja, git log não está limpando corretamente ... Aplicativos que aguardam chaves únicas (como vi, less) colocam o terminal em um modo que suprime o eco, elimina caracteres de controle especiais, etc., apenas para simplificar. Mas se eles não limparem, isso deixará o terminal inutilizável.

O comando stty sane simplesmente define os modos do terminal para um valor predeterminado. Se seus caracteres de edição não funcionarem, isso corrige (com exceção de algumas plataformas Unix em que stty sane define o caractere de apagamento como @ , etc). Eu uso um script para comparar stty output, mas não é curto ...

Sua fotografia tem pelo menos uma diferença (vejo -icanon , o que seria suficiente para interferir na edição de linhas). Para referência, aqui está o que eu vejo depois de stty sane :

$ stty -a
speed 38400 baud; rows 40; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Você pode querer olhar mais de perto, apenas no caso.

    
por 16.10.2017 / 00:43

Tags