SSH経由でリモートサーバーにログインするときにディレクトリを変更し、bashオプションを設定する方法

SSH経由でリモートサーバーにログインするときにディレクトリを変更し、bashオプションを設定する方法

私はしばしばリモートホストにSSHで接続する必要があり、bashオプションを使用するのが好きでset -o vi、通常はcd特定のディレクトリにログインする必要があります。これらのホストは一時ホストであるため(定期的に作成および削除される)、そのホストにログインして.bash_profile保存することはできません.bashrc。そのため、リモートサーバーに接続するたびに同じコマンドを入力する必要がないように、SSHを介して接続するときに何をすべきかを調べています。私はこれを達成するためにいくつかの方法を試しましたが、何も動作しないようです。誰でもこのコマンドを正しく実行するのに役立ちますか?一言で私がやりたいことはこれだ。

  1. cd特定のディレクトリへ
  2. バッシュオプションの設定set -o vi

私が試す方法は次のとおりです。

ssh [email protected] -t "cd /data; exec bash --login -c \"set -o vi\""

これはうまくいきますが、set -o viコマンドが実行されると、次のメッセージでセッションが切断されるため、SSHセッションは終了します。

Remotehost.comへの共有接続が閉じられました。

これらのコマンドを実行した後にセッションを開いたままにする方法はありますか、それとも目的を達成する他の方法はありますか?

ベストアンサー1

いくつかのオプション:

ssh -t [email protected] 'cd /data && exec bash --login -o vi'

(POSIXユーティリティの標準オプションとしてksh/ zsh...を含むすべてのPOSIX様シェルで動作し、標準オプションの1つです。コマンドラインはBourne、csh、rc、fishな​​ので、rootユーザーのログインシェルは何でも動作するはずです。 )dash-oshvi

または:

SSH-t[Eメール保護]'cd /data && exec env SHELLOPTS=vi bash --login'

実際、2番目のものを使用したくありません。これは$SHELLOPTS、変数が環境内にあり、すべてのbash呼び出しに影響を与えることを意味します(非対話型呼び出しは対話型シェルから呼び出しを継承するため、あらゆる種類の問題が発生します)。

また、bash2つのオプションセットがあります。 1つは-o/ settingsを使用し$SHELLOPTS、もう1つは-O/ settingsを使用します$BASHOPTS

おすすめ記事