Entendo que o backspace agora pode funcionar em uma sessão ssh
se TERM
estiver definido incorretamente. Mas, estranhamente, tenho um servidor em que TERM
está configurado corretamente, mas o backspace não funciona até que eu defina manualmente TERM=xterm
no shell (que deve ser redundante). Veja aqui:
~ ] ssh [email protected]
root 192.168.10.40 / # echo $0
-bash
root 192.168.10.40 / # echo $TERM
xterm-256color
root 192.168.10.40 / # # backspace does not work :(
root 192.168.10.40 / #
root 192.168.10.40 / # TERM=xterm-256color
root 192.168.10.40 / # # now backspace works!!
root 192.168.10.40 / # logout
Eu diria que cerca de 90% do tempo, o retrocesso não funciona até que eu execute TERM=xterm
e, 10% do tempo, eu não preciso executar o comando TERM=
porque o backspace já está funcionando. Eu comparei a saída de env
para cada caso e eles são idênticos (além de SSH_CLIENT
e SSH_CONNECTION
em que somente a porta do lado do cliente foi alterada)
Alguma ideia do que pode causar esse comportamento ou que solução alternativa pode ser?
Resposta aos comentários
Estou usando OpenSSH_6.8p1, BoringSSL
de https://android.googlesource.com/platform/external/openssh
e estou executando GNU bash, version 4.3.42(1)-release (arm-android-eabi)
de https://github.com/CyanogenMod/android_external_bash.git
stty -a
não mostra diferenças antes e depois de definir XTERM
. A saída é:
speed 38400 baud; rows 102; columns 319; line = 2;
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
bind -p|egrep 'delete|rubout|kill'
também não mostra diferenças antes e depois de definir XTERM
. A saída é:
"\C-h": backward-delete-char
"\C-?": backward-delete-char
"\C-x\C-?": backward-kill-line
"\e\C-h": backward-kill-word
"\e\C-?": backward-kill-word
# copy-region-as-kill (not bound)
"\C-d": delete-char
"\e[3~": delete-char
# delete-char-or-list (not bound)
"\e\": delete-horizontal-space
# forward-backward-delete-char (not bound)
"\C-k": kill-line
# kill-region (not bound)
# kill-whole-line (not bound)
"\ed": kill-word
# shell-backward-kill-word (not bound)
# shell-kill-word (not bound)
# unix-filename-rubout (not bound)
"\C-w": unix-word-rubout
# vi-delete (not bound)
# vi-delete-to (not bound)
# vi-overstrike-delete (not bound)
# vi-rubout (not bound)
Curiosamente, se eu source
my bashrc
, meu backspace começa a funcionar novamente. Eu sei que o bashrc
está sendo originado no login, porque esse é o único lugar onde eu configurei meu Ps1
value