ssh -t user@host bash -o emacs -i
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.
ssh -t user@host bash -o emacs -i
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.
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.