Como corrigir 'set-emacs' em .bashrc não funcionando no shell ssh

1

Eu trabalho em um usuário baseado em LDAP e na rede do host. Meu usuário existe em todos os hosts, já que é um usuário LDAP, e o diretório pessoal do meu usuário existe em todos os hosts como um ponto de montagem.

Eu tenho ~/.bash_profile configurado para fornecer ~/.bashrc se existir.

Dentro de ~/.bashrc minha linha final é set -o emacs .

Em shells locais isso configura corretamente a opção emacs para ativar a edição de linha no estilo emacs após o login.

Mas quando eu ssh para outro host, apesar do meu ~/.bashrc carregar tudo o resto, o set -o emacs não é aplicado ou aplicado e, em seguida, substituído.

Portanto, no momento eu tenho que manualmente set -o emacs cada vez que eu ssh para outro host.

Existe uma correção para isso, de modo que eu possa executar ssh em outro host e ter set -o emacs executado automaticamente, imediatamente após entrar no shell interativo, a edição de linha do emacs está ativada?

    
por user490123 02.05.2014 / 17:11

2 respostas

1

Usando alguns comandos strace , descobrimos que /etc/inputrc estava sendo carregado após meu ~/.bashrc e o que continha uma set editing-mode vi que cancelou meu set -o emacs . O /etc/inputrc não existe na minha máquina local, portanto, por que o problema não ocorreu no host local.

Esse strace também identificou que ~/.inputrc é procurado antes de /etc/inputrc ser carregado como fallback.

Então, fizemos touch ~/.inputrc para criar um inputrc vazio e voila, set -o emacs agora funciona no login SSH:)

    
por 07.05.2014 / 12:35
0

ssh inicia um novo shell no host remoto cuja entrada padrão e saída padrão são encaminhadas por ssh para o seu terminal local. Como tal, você precisa executar set -o emacs no host remoto , não no host local. Como a edição de linha no estilo emacs é o padrão, o arquivo remoto presumivelmente já contém uma linha como set -o vim , que você deve remover.

    
por 02.05.2014 / 17:33

Tags