sudo:ruby:在ssh之后找不到命令

我正在使用ec2实例,并尝试在ssh之后在另一个实例上执行ruby脚本到该实例。 我有一个更新配置文件的ruby脚本,所以我需要以超级用户身份运行该脚本。 当我在该实例上手动运行脚本时, sudo ruby recreate-532d01c.rb ,出现的错误是

 sudo: ruby: command not found 

运行没有root权限的简单脚​​本,例如。 ruby file_1.rb

使用rvmsudo代替sudo执行带有警告的脚本,

 ubuntu@ip-10-0-0-111:~$ rvmsudo ruby recreate-82bb000012.rb Warning: can not check `/etc/sudoers` for `secure_path`, falling back to call via `/usr/bin/env`, this breaks rules from `/etc/sudoers`. Run: export rvmsudo_secure_path=1 to avoid the warning, put it in shell initialization file to make it persistent. In case there is no `secure_path` in `/etc/sudoers`. Run: export rvmsudo_secure_path=0 to avoid the warning, put it in shell initialization file to make it persistent. 

我试图从其中一个实例的rails控制台执行以下命令来测试,它无法将ruby识别为命令

 1.9.3-p545 :002 > system("ssh -i /home/ubuntu/.ssh/own_key.pem ubuntu@**.***.***.** ruby execute-52d.rb") bash: ruby: command not found 

我在网上尝试了可能的解决方案,但无法解决问题。 我为一个旧的aws帐户运行相同的配置,这是一个新创建的帐户。 不确定这是否可能以任何方式出现问题,因为当前ec2实例默认属于vpc并且在2013年12月之后有一些更改

你得到的错误表明ruby不在sudo $PATH 。 要解决这个问题,您需要正确导出环境:

 sudo -E ruby 

或者,只使用完整路径。 以普通用户身份运行type ruby ,并将其与sudo一起使用。 例如:

 $ type ruby ruby is /usr/bin/ruby $ sudo /usr/bin/ruby