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

答え2

2 つのコマンドを実行します。

  1. リモートホストで実行するコマンドをファイルに入れます.bashrc.tmp
  2. $ scp .bashrc.tmp [email protected]:
  3. $ ssh <options> [email protected] "bash --login --rcfile ${HOME}/.bashrc.tmp"

これにより、ソースをバックアップする必要さえありません.bashrc

答え3

ホストのあるフォルダから別のフォルダに簡単に移動するには、apparixをインストールしてジャンプする必要がある複数の場所にブックマークを設定してから、to folderXapparixで使用できます。https://micans.org/apparix/man/apparix.html

答え4

共有ユーザーIDでリモートシステムを使用しているため、起動ファイルを編集すると他のユーザーにも影響を与えるため、編集したくありません。しかし、ここであなたの投稿はvi私が望むオプションを設定する方法を示しました。~/.ssh/configファイルに入れた内容です。

Host testsystem
User tester
RequestTTY yes
RemoteCommand exec /bin/bash --login -o vi

とても簡単です。 「cd」部分が何をしたいのかわかりません。

関連情報