我在远程服务器上有一个名为s
的脚本,它激活这样的虚拟环境:
source venv/bin/activate
当SSH-ed进入服务器时,我可以通过以下方式激活环境
. s
然后,我将SSH放入服务器,如下所示:
ssh -t user@host "cd /path/to/dir ; /bin/bash"
除了将工作目录更改为/path/to/dir
之外,如果每次登录到服务器时都能立即激活环境,那就太好了。但是,无论我将. s
放在SSH命令中的哪个位置,无论是否使用-c
for /bin/bash
,会话总是会立即结束。
发布于 2015-08-13 04:22:59
使用新的源文件,例如/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,而.
是POSIX。
更新以下讨论,具体说明OP的需要:
为了动态地创建和删除修改后的源文件rcforssh
,on可以使用:
ssh -t user@host "cd /path/to/dir ; echo '. ~/.bashrc ; . s ; rm rcforssh' > rcforssh ; /bin/bash --rcfile rcforssh"
即使用echo
命令创建源文件,并在所述文件中添加删除。
https://unix.stackexchange.com/questions/222989
复制相似问题