s
我在远程服务器上有一个名为 的脚本,用于激活如下所示的虚拟环境:
source venv/bin/activate
当通过 SSH 连接到服务器时,我可以通过以下方式激活环境
. s
我通过 SSH 连接到服务器,如下所示:
ssh -t user@host "cd /path/to/dir ; /bin/bash"
除了更改工作目录之外,/path/to/dir
如果我每次登录服务器时都可以立即激活环境,那就太好了。但无论我在哪里输入. s
SSH 命令,无论是否使用-c
for /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
并在所述文件中添加删除。