Alguns terminais enviam ^h
(caractere número 8) para a tecla BackSpace , e alguns enviam ^?
(número de caractere 127). Muitos emuladores de terminal podem ser configurados e a maioria dos programas pode ser configurada para saber qual chave deve ser esperada. Obviamente, os dois lados devem concordar.
Stty é uma maneira em que os aplicativos podem consultar a configuração do terminal. erase = ^?
significa que o arquivo de descrição do terminal no servidor afirma que quando o terminal envia ^?
, significa “apagar o caractere anterior”. werase = ^?
significa que ^?
significa “apaga a palavra anterior”. Há uma contradição entre essas duas configurações.
Quando você efetua login no ssh, o cliente ssh envia um nome para o terminal, que é colocado na variável de ambiente TERM
. Programas no servidor, em seguida, procurar descrições do terminal em um banco de dados (chamado termcap ou terminfo). Se essas descrições forem interrompidas ou se um arquivo de configuração em algum lugar (como /etc/profile
ou ~/.login
ou ~/.bashrc
) anular as descrições com dados incorretos, você poderá achar que há uma incompatibilidade. Por exemplo, uma possível fonte para o seu problema é se algum arquivo de inicialização contiver o comando stty werase '^?'
(forçando ^?
a significar uma palavra apagada) enquanto seu terminal envia ^?
para a tecla de retrocesso.
Idealmente, você deve corrigir o conflito, pois muitos programas lerão essas informações.
No Putty, você pode configurar qual de ^?
ou ^h
a tecla BackSpace envia. Verifique o valor dessa configuração. Talvez a maneira mais fácil de resolver seu problema seja fazer com que Putty envie ^h
para BackSpace e verifique se o servidor usa essa configuração ( stty erase '^h'
, para colocar em ~/.bashrc
, forçá-lo ).