我正在使用 Ubuntu 12.04.4 TLS
我写了一个简单的 shell 脚本/home/abdo/sample_serv.sh
来执行一个 Ruby 文件:
#!/bin/bash
/home/abdo/.rvm/rubies/ruby-2.1.0/bin/ruby /home/abdo/sample_serv.rb
并/home/abdo/sample_serv.rb
包含以下代码:
puts $:
require 'sinatra'
set :port, 8084
get '/' do
%{ <html><body>Hello from Abdo</body></html> }
end
执行rvmsudo ./home/abdo/sample_serv.sh
工作很好,但我想sudo ./home/abdo/sample_serv.sh
通过传递必要的环境变量来开始工作,因为我遇到了upstart
.
这个问题出现在我的/etc/init/foo.conf
description "webserver test"
start on runlevel [23]
stop on shutdown
pre-start script
exec >> /var/log/unicorn_test.log 2>&1
echo starting
end script
script
exec >> /var/log/unicorn_test.log 2>&1
/bin/bash /home/abdo/.rvm/bin/rvmsudo /home/abdo/sample_serv.sh
echo started
end script
当到达这条线/bin/bash /home/abdo/.rvm/bin/rvmsudo /home/abdo/sample_serv.sh
时,我得到
/home/abdo/.rvm/rubies/ruby-2.1.0/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in
`require': cannot load such file -- sinatra (LoadError)
我能够得到与ruby -v
我的用户相同的结果,但看起来GEM_PATH
(即使我在 upstart 配置文件中设置它)也无济于事。
基本上,如果我能理解如何(以及在哪里 --gem env
没有帮助,因为gem
当我这样做时不是命令sudo
)rubygems
查找所需的文件,我应该能够继续前进。