/ usr / bin / ruby​​ vs. rvm

时间:2012-03-22 22:38:01

标签: ruby ubuntu rvm

在我的Ubuntu开发沙箱中经过最后purging distro ruby packages的努力以取代强烈推荐的rvm后,我必须误解一些基本的东西:

我不想更改所有.rb源文件中的所有shebang行

#!/usr/bin/ruby

进入 / usr / local / rvm / bin / ruby​​ ,也不是任何版本特定的。

我的源文件需要使用系统默认的ruby二进制文件(而不是rvm)与生产服务器上的对应文件保持不变。

保持通用代码一致性的任何建议?我应该一次又一次地将shebangs切换到像

这样的东西
#!/usr/bin/env ruby

或(尽管what that link's site says)是否有一些干净的方法让rvm挂钩到/ usr / bin / ruby​​,假设所有冲突的.deb包已被删除?更不用说,如何让其他.deb软件包依赖于ruby + libs的存在来识别非发行版的红宝石......但这可能是一个单独的问题。

2 个答案:

答案 0 :(得分:16)

唯一明智的方法是:

#!/usr/bin/env ruby

它将始终在环境中使用当前选定的ruby,而不依赖于任何工具

答案 1 :(得分:2)

使用env(1) shebang增加了一定程度的复杂性和一系列安全问题,但它是一种常用的解决方案。一个问题是它连接解释器,但使其特定于每用户PATH值。

您可以使用符号链接替换/usr/bin/ruby。在现代linux上,递归shebang可以工作,而/ usr / bin / ruby​​可以是这样的脚本:

 #!/bin/sh
 exec /some/other/ruby "$@"