Des*_*ume 5 shell bash ssh ubuntu
我在s远程服务器上有一个名为 的脚本,用于激活这样的虚拟环境:
source venv/bin/activate
Run Code Online (Sandbox Code Playgroud)
当通过 SSH 连接到服务器时,我可以通过以下方式激活环境
. s
Run Code Online (Sandbox Code Playgroud)
我通过 SSH 进入服务器,如下所示:
ssh -t user@host "cd /path/to/dir ; /bin/bash"
Run Code Online (Sandbox Code Playgroud)
除了将工作目录更改为/path/to/dir它之外,如果我每次登录服务器时都可以立即激活环境,那就太好了。但是,无论身在何处,我把. s进入的SSH命令,利用-c对/bin/bash与否,总是会立即结束。
使用新的源文件,例如 /home/user/.rcforssh
#rc for ssh
. /home/user/.bashrc
. /home/user/venv/bin/activate #or whichever location
Run Code Online (Sandbox Code Playgroud)
并登录
ssh -t user@host "cd /path/to/dir ; /bin/bash --rcfile /home/user/.rcforssh"
Run Code Online (Sandbox Code Playgroud)
旁注:source不是 POSIX,.而是。
更新以下讨论指定 OP 的需求:
要动态创建和删除修改后的源文件rcforssh,可以使用:
ssh -t user@host "cd /path/to/dir ; echo '. ~/.bashrc ; . s ; rm rcforssh' > rcforssh ; /bin/bash --rcfile rcforssh"
Run Code Online (Sandbox Code Playgroud)
即使用echo命令创建源文件并在所述文件中添加删除。