Backspace, Tab não funciona no terminal (usando ssh)

31

Quando eu ssh em outra máquina com Debian com minha conta (com permissões sudo), minha tecla backspace gera alguns símbolos estranhos ao pressionar. Também Tab & As chaves del não funcionam também.

Por outro lado, também tenho outra conta na mesma máquina & quando eu ssh através desta conta, o seu terminal funciona perfeitamente bem. Eu não consegui descobrir porque isso está acontecendo.

    
por gopi1410 15.07.2012 / 13:13

7 respostas

30

Eu já vi esses problemas antes.

Pegue o backspace, por exemplo, o host remoto espera que algum caractere seja usado como "apagar / retroceder", enquanto você pressiona o backspace no terminal, o programa terminal enviará algum caractere para o host remoto, se o host remoto Espera diffs com os caracteres enviados pelo programa terminal, você encontraria este problema. Então, uma solução rápida é a seguinte:

  1. execute o comando #stty -a no host remoto e localize o que deve ser um código de exclusão na saída. Diga erase=^? .
  2. No terminal, digite Ctrl v e pressione o seu backspace. Você verá qual código é enviado como "apagar". Diga que é ^H .
  3. No host remoto, execute #stty erase ^H .
    (Nota: use Ctrl v + Backspace , não digite o ^ manualmente)

Você pode corrigir o problema da guia com o mesmo acima.

    
por 15.07.2012 / 15:10
19

Além da solução "stty", você pode tentar a solução "TERM".

Você ssh para o seu Debian a partir de algum terminal (putty, solaris dterm, debain xterm, nome-dele), este termo anuncia recursos (que incluem chaves como Backspace e Tab) via variável de ambiente TERM.

Então, após o ssh para o host unix (ele não depende do debian ou de outro host), configure a variável TERM de acordo com o seu terminal. Considere que você está usando o bash como shell e vt100 como terminal:

export TERM=vt100

ps: TERM deve ser anunciado via ssh automagicamente, mas em algumas circunstâncias essa mágica falha.

    
por 14.08.2012 / 16:56
9

Isso ocorre porque o seu shell padrão é sh , para usar o bash, basta executar bash do seu shell.

bash

Para definir o bash como seu shell padrão:

chsh -s /bin/bash 

ou

sudo chsh -s /bin/bash yourusername
    
por 14.06.2016 / 12:08
7

Seu shell pode estar definido como /bin/sh em vez de /bin/bash

    
por 30.07.2013 / 06:45
4

Eu costumo usar isso para corrigir qualquer saída de personagem funky no meu terminal. Ele redefine todos os caracteres especiais para seus valores padrão.

stty sane

A partir da página man stty:

same as cread -ignbrk brkint -inlcr -igncr icrnl -iutf8 -ixoff -iuclc -ixany imaxbel 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, all special characters to their default values

    
por 01.12.2016 / 21:56
1

No topo da resposta de Paul, se você quiser manter a capacidade de ter uma saída colorida, você pode usar o xterm-88color

echo 'export TERM=xterm-88color' >> ~/.bashrc
source ~/.bashrc
    
por 10.04.2018 / 06:09
0
# stty -a
speed 38400 baud; rows 34; columns 134; line = 0;
intr = ^C; quit = ^\; erase = ^H; 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

Minha chave home imprime um ^ [[1 ~ , conforme a solução de @Derui Si minha chave de backspace está funcionando bem, não sei o que fazer para a chave de casa.

    
por 15.11.2018 / 20:39