Não é possível inserir um caractere de barra ao fazer login via ssh

Não é possível inserir um caractere de barra ao fazer login via ssh

Quando entro sshem um de nossos servidores, não consigo inserir uma barra, o que torna difícil fazer praticamente qualquer coisa (como ls /). Como posso fazer a barra funcionar?

Algumas informações adicionais:

  • /etc/issueafirma que está executando o "CentOS release 5.7 (Final)"
  • A única maneira de saber disso é executandossh me@some-host cat /etc/issue
  • Estou usando o Mac OS X Terminal.app e nunca tive problemas com isso, em sistemas Centos 5 ou outros
  • Não sei quem ou como a máquina foi construída e configurada
  • echo $TERMrelatóriosxterm-256color
  • não sei se isso faz sentido para alguém (não faz sentido para mim), mas troquei diffo /etc/inputrcservidor com defeito por um que funciona e obtive o seguinte:

    $ diff /tmp/{good,bad}_inputrc
    1c1
    < # do not bell on tab-completion
    ---
    > /# do not bell on tab-completion
    37a38,49
    > 
    > # Home Key
    > "\e[7~":beginning-of-line
    > 
    > # End Key
    > "\e[8~":end-of-line
    > 
    > # Delete Key
    > "\e[3~":delete-char
    > 
    > # Insert Key
    > "\e[2~":paste-from-clipboard
    

Responder1

Esta linha é o seu problema

/# do not bell on tab-completion

Se eu adicionar essa linha à minha configuração de trabalho, a barra para de funcionar.

A única pista que posso encontrar sobre isso está na página de manual do readline:

As linhas em branco são ignoradas. As linhas que começam com # são comentários. Linhas que começam com $ indicam construções condicionais. Outras linhas indicam combinações de teclas e configurações de variáveis.

Como não é uma linha em branco e não começa com #ou $, deve ser tratada como uma ligação de tecla.

Responder2

Um programa chamado xmodmap pode ser usado para modificar mapas de teclado. Veja man xmodmapse já está instalado.

Resumindo, use xevpara ver detalhes sobre eventos X. Ligue isso e pressione a tecla /. Na minha configuração, este é o resultado que obtenho:

KeyRelease event, serial 34, synthetic NO, window 0x4e00001,
root 0x15a, subw 0x0, time 107752919, (784,828), root:(789,850),
state 0x10, keycode 61 (keysym 0x2f, slash), same_screen YES,
XLookupString gives 1 bytes: (2f) "/"
XFilterEvent returns: False

Em seguida, na máquina remota, use xmodmap -e 'keycode [KEYCODE] = [KEYSYM]para criar o mapeamento, onde [KEYCODE] e [KEYSYM] são os valores recuperados de xev. Tente definir o padrão 61,0x2f primeiro para ver se ele só precisa ser redefinido. (ou seja, xmodmap -e 'keycode 61 = 0x2f')

Se isso não for possível, tente mapear uma chave diferente. Por exemplo, tentei o código-chave 105 (controle direito) para 0x2f. Isso funcionou localmente e em uma sessão ssh para mim.

Editar:

Você também pode definir o ponto de interrogação. Estenda o comando anterior para xmodmap -e 'keycode 61 = 0x2f 0x3f'. Você pode ver um completolista de keysyms aqui.

informação relacionada