通过 SSH 进入远程 shell,执行“source”命令,然后停留在远程 shell 中

通过 SSH 进入远程 shell,执行“source”命令,然后停留在远程 shell 中

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"

旁注:source不是 POSIX,而是.


更新以下讨论,指定 OP 的需求:

rcforssh要动态创建和删除修改后的源文件,可以使用:

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

即使用命令创建源文件echo并在所述文件中添加删除。

相关内容