如何使用rbenv为shell脚本指定ruby版本?

iro*_*and 9 ruby

我将用 ruby​​ 编写一些简短的脚本。我想通过shebang或其他方式指定ruby版本。

我将在许多环境中使用该脚本。我在环境中使用 rbenv,但不确定安装了哪个版本的 ruby​​。

如果未安装指定版本的 ruby​​,脚本必须失败。

我该怎么做?有什么好方法我应该遵循吗?

slm*_*slm 8

根据官方文档,听起来您只需要像这样为脚本添加前缀:

#!/usr/bin/env ruby
Run Code Online (Sandbox Code Playgroud)

然后执行以下操作之一来确定rbenv要使用的 Ruby 版本:

摘录:https : //github.com/sstephenson/rbenv

选择 Ruby 版本

执行 shim 时,rbenv通过从以下来源读取它来确定要使用的 Ruby 版本,按此顺序:

  1. RBENV_VERSION环境变量,如果指定。您可以使用rbenvshell 命令在当前的 shell 会话中设置此环境变量。

  2. .ruby-version通过搜索您正在执行的脚本的目录及其每个父目录找到的第一个文件,直到到达文件系统的根目录。

  3. .ruby-version通过搜索当前工作目录及其每个父目录找到的第一个文件,直到到达文件系统的根目录。您可以.ruby-version使用rbenvlocal 命令修改当前工作目录中的文件。

  4. 全局~/.rbenv/version文件。您可以使用rbenvglobal 命令修改此文件。如果全局版本文件不存在,则rbenv假定您要使用“系统”Ruby — 即,如果rbenv不在您的路径中,将运行任何版本。

然后,您可以使用此命令.ruby-version在目录中创建一个文件以及 Ruby 脚本。

$ rbenv local 1.9.3-p327
Run Code Online (Sandbox Code Playgroud)