如何在单个Ruby脚本的Shebang行通过SCL调用Ruby 2.4?
单文件解决SCL Ruby 2.4的Shebang问题
没问题,这事儿完全可以用单文件的shebang方案搞定,不用额外写包装脚本。
直接把你的脚本首行改成下面这个shebang就行:
#!/usr/bin/scl enable ruby-24 -- ruby
举个完整的例子,你的foo.rb可以写成这样:
#!/usr/bin/scl enable ruby-24 -- ruby puts "Hello world" puts "当前Ruby版本: #{RUBY_VERSION}"
原理说明:
/usr/bin/scl是系统里SCL工具的可执行路径,直接作为shebang的解释器enable ruby-24告诉SCL启用Ruby 2.4的软件集合环境--是关键,用来分隔SCL的命令参数和后续要执行的程序(这里就是ruby),确保SCL启用环境后,会调用Ruby解释器来执行当前脚本的内容
使用步骤:
- 把上面的内容保存成脚本文件(比如
foo.rb) - 给脚本添加执行权限:
chmod +x foo.rb - 直接运行脚本:
./foo.rb
这样运行出来的结果就会是Ruby 2.4的版本,而不是系统默认的1.8.7啦。
内容的提问来源于stack exchange,提问作者user1134991
相关产品推荐
相关产品推荐

