私たちset -o vi
は彼らの~/.bashrc
。
このボックスにSSHを介して接続し、自動的に実行してset -o emacs
時間を節約することができれば良いでしょう。
リモートホストでこれらの追加作業を実行する必要があることを示唆しているソリューションを見ましたが、~/.bashrc
さまざまな理由でこれを修正することはできません。
別の解決策は、以下を使用することを示唆しています。
spawn ssh -t user@host "set -o emacs; /bin/bash -i"
expect
.. しかし、通常のシェルではなくシェルを実行する必要があることを知っていますbash
。
これを達成する簡単な方法はありますか?どんなアドバイスも本当にありがとうございます。
答え1
ssh -t user@host bash -o emacs -i
答え2
このオプションでbashを起動し--rcfile
、別のbashrcを指定してください。たとえば、~/.bashrc-emacs
以下を含むファイルを作成します。
. ~/.bashrc
set -o emacs
そして走る
ssh -t user@host bash --rcfile=.bashrc-emacs
読み取る--norc
スキップを完全に使用できます。 BashはデフォルトでEmacsモードです。/etc/bash.bashrc
~/.bashrc
本当にリモートデータを読みたいのですが、.bashrc
サーバー上のどのファイルにも書きたくない場合は、予想が最善の選択だと思います。
答え3
.bashrcを編集しないと言ったことがわかります。しかし、これが他の人に役立つことを願っています。私は何年もの間、同様の質問に対する良い答えを探していました。私はviを使うのが好きですが、他の人のデフォルト設定を変更したくありません。
ローカル設定で/etc/ssh/ssh_configを編集し、次の行を追加します。
SendEnv EDITOR
どの環境変数でも使用できますが、EDITORが良い選択であるようです。私の場合、エディタはvimに設定されています。
リモートシステムで/etc/ssh/sshd_configを編集し、次の行を追加します。
AcceptEnv EDITOR
.bashrc または .bash_profile を編集し、以下を追加します。
if [ "$EDITOR" = "vim" ]; then
set -o vi;
fi
この質問のユースケースでは、viをemacsに置き換えます。注:ターゲットシステムでsshdを再起動する必要があるかもしれません。