首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个版本的shebang

多个版本的shebang
EN

Stack Overflow用户
提问于 2013-11-25 21:47:33
回答 2查看 2.3K关注 0票数 6

在我的大量Ruby脚本集合中,我确实从常见的shebang开始我的脚本:

代码语言:javascript
复制
#!/usr/bin/env ruby

现在我发现一些脚本确实需要特定的Ruby版本,而不是,它们不是可以部署在特定Ruby版本下的Rails应用程序。它们只是一个文件脚本,可以从命令行启动,无法使用系统版本。

在运行以下文件代码之前,是否有任何方法可以编写使用rbenv/rvm设置环境的shebang?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-25 22:37:31

您不一定需要设置任何环境。您所需要的只是通往您想要运行的ruby二进制代码的路径,其他的一切都会随之而来。

下面是一个如何设置它的示例:

  1. 创建一个文件夹~/bin。这将保存指向所有个人红宝石二进制文件的指针(符号链接)。
  2. 更新您的shell PATH,以便在可执行文件的搜索路径中包含~/bin
  3. 将您在~/bin中需要的任何红宝石二进制链接到实际的红宝石二进制。

例如,在我的~/bin中有:

代码语言:javascript
复制
ruby18 -> /opt/ruby18/bin/ruby
ruby19 -> /opt/ruby19/bin/ruby
ruby20 -> /opt/ruby20/bin/ruby

现在假设您有一个需要1.9才能运行的脚本。那么你要做的就是:

代码语言:javascript
复制
#!/usr/bin/env ruby19

如果您已将宝石安装到每个ruby可执行文件的默认gem目录中,这将有效。如果您已经在其他地方安装了gems,那么它会变得更加复杂,您需要在运行脚本之前修改GEM_PATH

如果您不想对~/bin产生兴趣,那么只需硬编码您的shebang行,而直接指向ruby二进制代码:

代码语言:javascript
复制
#!/opt/ruby19/bin/ruby

...or等效的rbenv/rvm路径。

但是,如果您编译了ruby1.9的新修补程序,并且希望将它放在另一个文件夹(如~/bin )中,那么在您的/opt/ruby19-p123中有符号链接将使您能够更容易地更新您的bin指针。然后只需更新~/bin中的符号链接,所有脚本都将运行新的修补版本。

票数 1
EN

Stack Overflow用户

发布于 2013-11-25 22:17:34

rbenv将查找由(例如)设置的.ruby-version文件。

代码语言:javascript
复制
$ rbenv local 1.9.3-p448

创建一个简单的文件,check

代码语言:javascript
复制
#!/usr/bin/env ruby
puts RUBY_VERSION

使其可执行

代码语言:javascript
复制
$ chmod +x check

运行它

代码语言:javascript
复制
$ ./check

输出

代码语言:javascript
复制
1.9.3

也就是说,这不是每个文件的设置。如果有一种方法来改变rbenv的行为,使用的话,这可能是一个更好的选择。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20204016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档