我正在使用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
我尝试了通过Web的可能解决方案,但无法解决该问题。我为一个旧的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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句