私はしばしばリモートホストにSSHで接続する必要があり、bashオプションを使用するのが好きでset -o vi
、通常はcd
特定のディレクトリにログインする必要があります。これらのホストは一時ホストであるため(定期的に作成および削除される)、そのホストにログインして.bash_profile
保存することはできません.bashrc
。そのため、リモートサーバーに接続するたびに同じコマンドを入力する必要がないように、SSHを介して接続するときに何をすべきかを調べています。私はこれを達成するためにいくつかの方法を試しましたが、何も動作しないようです。誰でもこのコマンドを正しく実行するのに役立ちますか?一言で私がやりたいことはこれだ。
cd
特定のディレクトリへ- バッシュオプションの設定
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
-o
sh
vi
または:
SSH-t[Eメール保護]'cd /data && exec env SHELLOPTS=vi bash --login'
実際、2番目のものを使用したくありません。これは$SHELLOPTS
、変数が環境内にあり、すべてのbash
呼び出しに影響を与えることを意味します(非対話型呼び出しは対話型シェルから呼び出しを継承するため、あらゆる種類の問題が発生します)。
また、bash
2つのオプションセットがあります。 1つは-o
/ settingsを使用し$SHELLOPTS
、もう1つは-O
/ settingsを使用します$BASHOPTS
。