web-dev-qa-db-ja.com

リモートシェルにSSHでログインし、「source」コマンドを実行して、リモートシェルに留まる

次のような仮想環境をアクティブにするリモートサーバー上に、sという名前のスクリプトがあります。

source venv/bin/activate

サーバーにSSHで接続すると、次の方法で環境をアクティブ化できます

. s

そして私は次のようにサーバーにSSHします:

ssh -t user@Host "cd /path/to/dir ; /bin/bash"

作業ディレクトリを/path/to/dirに変更するだけでなく、サーバーにログインするたびにすぐに環境をアクティブ化できると便利です。ただし、. sをSSHコマンドにどこに入れても、-c/bin/bashに使用するかどうかに関係なく、セッションは常に即座に終了します。

4
Desmond Hume

新しいソースファイルを使用します。 /home/user/.rcforssh

 #rc for ssh
 . /home/user/.bashrc
 . /home/user/venv/bin/activate  #or whichever location

でログイン

ssh -t user@Host "cd /path/to/dir ; /bin/bash --rcfile /home/user/.rcforssh"

補足:sourceはPOSIXではありませんが、.です。


OPの必要性を明記した議論に続く更新:

変更されたソースファイルrcforsshをオンザフライで作成および削除するには、onを使用できます。

ssh -t user@Host "cd /path/to/dir ; echo '. ~/.bashrc ; . s ; rm rcforssh' > rcforssh ; /bin/bash --rcfile rcforssh"

つまり、echoコマンドを使用してソースファイルを作成し、そのファイルに削除を追加します。

5
Fiximan