SSHシェルで動作しない.bashrcの "set -o emacs"を修正する方法

SSHシェルで動作しない.bashrcの "set -o emacs"を修正する方法

私はユーザーとホストで構成されたLDAPベースのネットワークで作業しています。私のユーザーはLDAPユーザーなので、すべてのホストに存在し、私のユーザーのホームディレクトリはマウントポイントとしてすべてのホストに存在します。

~/.bash_profileソースが~/.bashrcあれば設定しておきました。

~/.bashrc私の最後の行の中にset -o emacs

ローカルシェルは、ログイン後にemacsスタイル行編集を有効にするようにemacsオプションを正しく設定します。

ただし、他のホストでsshを実行すると、他~/.bashrcのすべてをロードしてもset -o emacs適用されないか、適用され上書きされます。

そのため、現在はset -o emacs他のホストにSSHで接続するたびに手動で行う必要があります。

set -o emacsEmacsライン編集が有効になっている間にインタラクティブシェルに入るとすぐに自動的に実行されるように、別のホストでSSH経由で実行する方法はありますか?

答え1

いくつかのコマンドを使用してmyの後にロードされ、myをオーバーライドする呼び出しが含まれていることstraceがわかりました。私のローカルコンピュータには問題が存在しないため、localhostでは問題は発生しません。/etc/inputrc~/.bashrcset editing-mode viset -o emacs/etc/inputrc

また、straceは代替アイテムとしてロードする~/.inputrc前に何を見つけるべきかを決定します。/etc/inputrc

だから私たちはtouch ~/.inputrc空のものを作成し、絞り込むinputrcset -o emacs今SSHを使用してログインすることができます:)

答え2

ssh標準入力と標準出力がsshローカル端末に渡されるリモートホストで新しいシェルを起動します。したがってset -o emacs、実行する必要があります。離れてローカルホストではなくホスト。emacsスタイルラインの編集が既定値なので、リモートファイルにすでに類似した行が含まれている可能性があるため、削除する必要がありますset -o vim

関連情報