2011-03-04 45 views

回答

4

这是做它的方式......

#!/usr/bin/env /usr/local/bin/[email protected] 
+0

嗯,我的系统中没有任何符号链接的红宝石在/ usr/local/bin – Kevin 2011-06-06 01:06:58

+0

也许它们只是在你的系统上的其他地方? – tcurdt 2012-02-03 09:16:17

5

tcurdt的职位是有点误导。在我的系统上,我只是在系统上以root身份设置了rvm(ree,1.8.7,& 1.9.2 rubies)。我在/ usr/local/bin目录是这样的:

lrwxrwxrwx 1 root rvm 46 Mar 13 06:50 ree-1.8.7-2011.03 -> /usr/local/rvm/wrappers/ree-1.8.7-2011.03/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 13 06:42 ruby-1.8.7-p334 -> /usr/local/rvm/wrappers/ruby-1.8.7-p334/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 11 22:42 ruby-1.9.2-p180 -> /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby 

我没有一个所谓的宝石系统中tcurdt的例子。所以,我认为适当的方式来实现你以后会像这样:

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

什么RVM的一些解释在这里做什么:RVM包装创建脚本(在/ usr /本地/ RVM /包装/ *)其设置诸如GEM_PATH & GEM_HOME。这些都是需要的,以便宝石可以正确加载作为特定版本的红宝石的一部分。在执行rvm的系统安装时,链接到这些包装脚本的链接将创建在/usr/local/bin之下。如果你已经安装了rvm,它们位于这里:$HOME/.rvm/bin

将shebang行(#!/ ....)加上/usr/bin/env作为前缀至关重要。如果你只是试着直接指向一个ruby(例如#!/ usr/local/bin/ruby​​-1.9.2-p180)就不够了。这是因为这些包装实际上不是Ruby解释,他们是在呼唤你的脚本作为参数传递给Ruby解释器的先期环境设置,像这样的shell脚本:

source "/usr/local/rvm/environments/ruby-1.9.2-p180" 
exec ruby "[email protected]" 

[email protected]是你的shell脚本名称被传递给ruby。

最后这里是一个示例脚本,我放在一起,我在一个cgi-bin目录中运行:

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

puts "Content-Type: text/html" 
puts 
puts "<html>" 
puts "<body>" 
puts "<h1>Hello Ruby!</h1>" 
puts "<p>shebang: #!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180</p>" 
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>" 
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>" 
puts "<p>RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>" 
puts "</body>" 
puts "</html>" 
+0

虽然你非常详细,这不是问题的正确答案。 我不想只选择一个特定的红宝石版本,但也是宝石!幸运的是,rvm不仅为Ruby版本创建封装脚本,还创建了gemsets。当然,如果你没有一个“系统”gemset,试图选择它没有意义;) 顺便说一句:只需选择红宝石版本,你也可以使用rvm-shell – tcurdt 2011-03-26 07:00:43

+0

没有注意到rvm-shell。所以可以使用: #!/ usr/bin/env/usr/local/bin/rvm-shell? 你最终会选择哪个ruby&gemset? – slm 2011-03-28 17:41:11

5

#!/usr/bin/env rvm [email protected] do ruby

+0

这似乎是最简单的方法来完成此操作。 – 2013-09-20 14:55:50

+0

这不适合我。 RVM 1.26.11,Ubuntu 15.04 – 2015-08-26 20:22:35