|
以前就遇到过这个问题,没深究,今天又碰到了,决定彻底解决掉.
服务器上的Ruby是通过rvm安装的,登陆到服务器上执行正常,但跑部署脚本(Ruby,并非是Shell)就提示找不到命令.
翻SSH的手册看到一句话:- If command is specified, it is executed on the remote host instead of a login shell.
复制代码 这说明SSH获得的Shell和login获得的Shell是有区别的,也就是根本不会载入bashrc.而rvm是依赖bashrc的,因此也不会启动.
查看远程和本地返回了截然不同的结果:远程缺少和rvm相关的路径,这解释了为什么找不到命令.
了解到症结所在,解决就简单了:
将rvm相关的环境变量输出到~/.ssh/environment文件下- env | grep rvm > ~/.ssh/environment
复制代码 修改/etc/ssh/sshd_conf,新增- PermitUserEnvironment yes
复制代码 重启SSH服务 |
|