Sys*_*ank 5 ruby shebang rvm rbenv
在我的大量Ruby脚本集中,我用常见的shebang开始我的脚本:
#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)
现在我发现一些需要某些Ruby版本的脚本,不,它们不是可以在特定Ruby版本下部署的Rails应用程序.它们只是单个文件脚本,可以从命令行启动,无法使用系统版本.
在运行下面的文件代码之前,有没有办法编写一个用rbenv/rvm设置环境的shebang?
您不一定需要设置任何环境。您所需要的只是要运行的 ruby 二进制文件的路径,其他一切都会遵循。
以下是有关如何设置它的示例:
创建一个文件夹~/bin。这将保存指向您所有个人 Ruby 二进制文件的指针(符号链接)。
更新您的 shell,PATH以便将其~/bin包含在可执行文件的搜索路径中。
将您需要的任何 ruby 二进制文件符号链接~/bin到实际的 ruby 二进制文件。
例如在我的~/bin我有:
ruby18 -> /opt/ruby18/bin/ruby
ruby19 -> /opt/ruby19/bin/ruby
ruby20 -> /opt/ruby20/bin/ruby
Run Code Online (Sandbox Code Playgroud)
现在假设您有一个需要 1.9 才能运行的脚本。那么你需要做的就是:
#!/usr/bin/env ruby19
Run Code Online (Sandbox Code Playgroud)
如果您已将 gem 安装到每个 ruby 可执行文件的默认 gem 目录中,这将起作用。如果您在其他地方安装了 gem,那么它会变得更加复杂,您需要GEM_PATH在运行脚本之前进行修改。
如果你不想花哨,~/bin那么只需对 shebang 行进行硬编码,而不是直接指向 ruby 二进制文件:
#!/opt/ruby19/bin/ruby
Run Code Online (Sandbox Code Playgroud)
...或等效的 rbenv/rvm 路径。
如果您~/bin编译了 ruby 1.9 的新补丁,并且您想将其放置在另一个文件夹(例如/opt/ruby19-p123. 然后您只需更新符号链接~/bin,所有脚本都将运行新的修补版本。
| 归档时间: |
|
| 查看次数: |
2074 次 |
| 最近记录: |