リモート.bashrcを変更せずにSSHログインコマンドを実行する

リモート.bashrcを変更せずにSSHログインコマンドを実行する

私たち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を再起動する必要があるかもしれません。

関連情報