在我的大量Ruby脚本集合中,我确实从常见的shebang开始我的脚本:
#!/usr/bin/env ruby现在我发现一些脚本确实需要特定的Ruby版本,而不是,它们不是可以部署在特定Ruby版本下的Rails应用程序。它们只是一个文件脚本,可以从命令行启动,无法使用系统版本。
在运行以下文件代码之前,是否有任何方法可以编写使用rbenv/rvm设置环境的shebang?
发布于 2013-11-25 22:37:31
您不一定需要设置任何环境。您所需要的只是通往您想要运行的ruby二进制代码的路径,其他的一切都会随之而来。
下面是一个如何设置它的示例:
~/bin。这将保存指向所有个人红宝石二进制文件的指针(符号链接)。PATH,以便在可执行文件的搜索路径中包含~/bin。~/bin中需要的任何红宝石二进制链接到实际的红宝石二进制。例如,在我的~/bin中有:
ruby18 -> /opt/ruby18/bin/ruby
ruby19 -> /opt/ruby19/bin/ruby
ruby20 -> /opt/ruby20/bin/ruby现在假设您有一个需要1.9才能运行的脚本。那么你要做的就是:
#!/usr/bin/env ruby19如果您已将宝石安装到每个ruby可执行文件的默认gem目录中,这将有效。如果您已经在其他地方安装了gems,那么它会变得更加复杂,您需要在运行脚本之前修改GEM_PATH。
如果您不想对~/bin产生兴趣,那么只需硬编码您的shebang行,而直接指向ruby二进制代码:
#!/opt/ruby19/bin/ruby...or等效的rbenv/rvm路径。
但是,如果您编译了ruby1.9的新修补程序,并且希望将它放在另一个文件夹(如~/bin )中,那么在您的/opt/ruby19-p123中有符号链接将使您能够更容易地更新您的bin指针。然后只需更新~/bin中的符号链接,所有脚本都将运行新的修补版本。
发布于 2013-11-25 22:17:34
rbenv将查找由(例如)设置的.ruby-version文件。
$ rbenv local 1.9.3-p448创建一个简单的文件,check
#!/usr/bin/env ruby
puts RUBY_VERSION使其可执行
$ chmod +x check运行它
$ ./check输出
1.9.3也就是说,这不是每个文件的设置。如果有一种方法来改变rbenv的行为,使用的话,这可能是一个更好的选择。
https://stackoverflow.com/questions/20204016
复制相似问题