云伴侣-云伴侣是管理云服务器、云主机最简单、最省心的方式.

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1442|回复: 0

解决通过SSH登陆后很多命令报"command not found"的问题

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

本版积分规则

QQ|小黑屋|云伴侣 ( 粤ICP备14022677号-1 )| 亚丁云旗下站点

GMT+8, 2024-4-28 13:24

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表