我想指定在我的ruby脚本的标题内使用哪个ruby解释器和哪个gemset。东西沿线在脚本标题中选择rvm gemset
#!/usr/bin/env source /usr/local/lib/rvm && rvm [email protected]
会很好。
任何有关如何做到这一点的建议?
我想指定在我的ruby脚本的标题内使用哪个ruby解释器和哪个gemset。东西沿线在脚本标题中选择rvm gemset
#!/usr/bin/env source /usr/local/lib/rvm && rvm [email protected]
会很好。
任何有关如何做到这一点的建议?
这是做它的方式......
#!/usr/bin/env /usr/local/bin/[email protected]
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>"
#!/usr/bin/env rvm [email protected] do ruby
这似乎是最简单的方法来完成此操作。 – 2013-09-20 14:55:50
这不适合我。 RVM 1.26.11,Ubuntu 15.04 – 2015-08-26 20:22:35
嗯,我的系统中没有任何符号链接的红宝石在/ usr/local/bin – Kevin 2011-06-06 01:06:58
也许它们只是在你的系统上的其他地方? – tcurdt 2012-02-03 09:16:17