项目中有个地方需要程序中 ssh 到另外一台机器去执行 ruby 代码,但是会遇到这样的情况:
$ssh -p 10022 [email protected] rvm list;
$bash: rvm: 未找到命令
why?
直接登录到这台机器上看看呢?
$ssh -p 10022 [email protected];
rvm list;
rvm rubies
ruby-1.9.3-p551 [ x86_64 ]
=* ruby-2.1.2 [ x86_64 ]
# => - current
# =* - current && default
# * - default
so,应该是在 ssh 执行命令的时候,没有携带用户的环境变量
狗狗了一下,可以通过设置我想要登录机器的 SSHD 来允许保持用户环境
$sudo vim /etc/ssh/sshd_config;
add:
PermitUserEnvironment yes;
$sudo service ssh restart;
改完了后端,还需要给执行 ssh 的机器添加想要携带的环境变量
vim ~/.ssh/environment
设置你所需要的 GEM_HOME,PATH 等(这里的值还是应该以 target 机器的为准)
验证:
$ssh -p 10022 [email protected] rvm list;