我读过其他关于"要求错误的帖子"但我觉得它有所不同,所以我在另一个主题中问你。 我使用环境有限的软件在ruby中创建了一个脚本,所以我尝试了不同的方法来执行它:
首先尝试:
我把绝对路径放到了ruby:
#!/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby
但这会给出错误:
"/usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:51:in `require': cannot load such file -- mail (LoadError)\n\tfrom /usr/local/rvm/rubies/ruby-2.1.1/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:51:in `require'\n\tfrom /opt/script/script.rb:6:in `<main>'\n"
第二次尝试:
我创建了一个包装器并将绝对路径放到ruby包装器中:
#!/usr/local/rvm/wrappers/ruby-2.1.1@script/ruby
Centos6中的那个在Centos5(Elastix)中工作时给出了错误:
"/opt/script/script.rb: line 4: require: command not found\n/opt/script/script.rb: line 14: syntax error near unexpected token `('\n/opt/script/script.rb: line 14: `def logger(message)'\n"
错误在哪里?我用这种方式创建了一个包装器:
rvm gemset create script
rvm gemset use script
gem install mail
感谢您的帮助。 附:在完整的环境shell中,脚本在机器(Centos 5和6)中工作,所以我认为我可以排除脚本问题
答案 0 :(得分:0)
我理解我的问题所以我在这里写了一个解决方案。 这个问题与Ruby没有关系,但与Linux有关,线索是在shebang行的字符@中没有被解释,因此脚本被执行为bash文件。 我试图找到一种方法来逃避这个角色,而不是在启动字符串中写入解释器的完整路径。 在Centos 5中,Centos 6中存在这种限制。