Execute o comando ssh login sem modificar o .bashrc remoto

5

Temos vários servidores configurados com set -o vi em seus ~/.bashrc .

Seria bom poder usar ssh nessas caixas e executar automagicamente set -o emacs como um tempo de espera.

Eu vi uma solução indicando que tais adições devem ser feitas no host remoto ~/.bashrc , mas não podemos modificá-las por vários motivos.

Outra solução sugere o uso de:

spawn ssh -t user@host "set -o emacs; /bin/bash -i"

.. mas eu entendo isso requer a execução do expect shell em vez de simples bash .

Existe uma maneira simples de atingir esse objetivo? Qualquer sugestão seria muito apreciada.

    
por user490123 13.11.2012 / 16:29

3 respostas

4

ssh -t user@host bash -o emacs -i
    
por 13.11.2012 / 18:16
2

Inicie o bash com a opção --rcfile e especifique um bashrc diferente. Por exemplo, escreva um arquivo chamado ~/.bashrc-emacs que contém

. ~/.bashrc
set -o emacs

e execute

ssh -t user@host bash --rcfile=.bashrc-emacs

Você pode usar --norc para ignorar a leitura /etc/bash.bashrc e ~/.bashrc . Bash está no modo emacs por padrão.

Se você quiser ler o controle remoto .bashrc e não quiser gravar em nenhum arquivo no servidor, acho que a sua melhor aposta é sua.

    
por 13.11.2012 / 22:50
2

Eu sei que você mencionou não editar o .bashrc. No entanto, espero que isso possa ajudar outra pessoa. Eu tenho procurado uma boa resposta para um problema semelhante por muitos anos. Eu gosto de usar o vi, mas não quero mudar o padrão para todos os outros.

Edite / etc / ssh / ssh_config em sua configuração local e adicione a seguinte linha:

SendEnv EDITOR

Você pode usar qualquer variável de ambiente, mas o EDITOR parece ser uma boa escolha. No meu caso, o EDITOR está configurado para vim.

No sistema remoto, edite / etc / ssh / sshd_config e adicione a seguinte linha:

AcceptEnv EDITOR

Edite .bashrc ou .bash_profile e adicione o seguinte:

if [ "$EDITOR" = "vim" ]; then
         set -o vi;
fi

Para o caso de uso nesta questão, substitua vi pelo emacs. Nota: Você pode precisar reiniciar o sshd no sistema de destino.

    
por 30.03.2014 / 15:51

Tags