SSHを介してリモートシェルに入り、「source」コマンドを実行してリモートシェルに留まります。

SSHを介してリモートシェルに入り、「source」コマンドを実行してリモートシェルに留まります。

s次のように仮想環境を有効にするリモートサーバーから呼び出されるスクリプトがあります。

source venv/bin/activate

SSHを介してサーバーに接続したら、次のように環境を有効にできます。

. s

次のようにSSHを介してサーバーに接続します。

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

作業ディレクトリを変更するだけでなく、/path/to/dirサーバーにログインするたびにすぐに環境を有効にできるようにしたいと思います。ただし、. sSSH コマンドをどこに入力しても-cfor を使用するかどうかに関係なく、/bin/bashセッションは常に即座に終了します。

答え1

新しいソースファイルを使用してください。/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"

注:sourcePOSIXではありませんが.


OPの要件を指定するには、次の議論を更新してください。

rcforssh変更されたソースファイルを動的に作成および削除するには、次のものを使用できます。

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

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

関連情報