如何让 /usr/bin/env ruby​​ 指向正确的 ruby​​ 环境?

如何让 /usr/bin/env ruby​​ 指向正确的 ruby​​ 环境?

因此我编写了一个 cgi ruby​​ 脚本,并在脚本文件的顶部添加了以下内容:

#!/usr/bin/env ruby
 require 'rubygems'
 require 'action_pack'
 require 'cgi'

经过几个小时没有收到“/usr/bin/env: ruby​​: 没有这样的文件或目录”错误和谷歌搜索后,我卸载了我的系统 ruby​​ 1.8.7(我也通过 rvm 安装了 1.9.3),方法是sudo apt-get 清除 ruby​​ ruby​​gems。我仍然会收到错误。当我输入“which ruby​​”时,我收到/home/homeuser/.rvm/rubies/ruby-1.9.3-p194/bin/ruby。有人知道如何修复此问题吗?

以下是 echo $PATH 产生的结果:

/home/homeuser/.rvm/gems/ruby-1.9.3-p194@rsoc326/bin:/home/homeuser/.rvm/gems/ruby-1.9.3-p194@global/bin:/home/homeuser/.rvm/rubies/ruby-1.9.3-p194/bin:/home/homeuser/.rvm/bin:/var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/homeuser/.rvm/bin

我的桌面上有相同的设置,但没有遇到相同的问题。

答案1

/usr/bin/env ruby应该指向 RVM ruby​​。

但是让我们检查一下你的设置

  1. 检查你的内容~/.profile,它应该包含类似以下两行的内容:

    export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM
    
  2. 其次,检查你安装的 ruby​​ 版本:

    rvm list
    

    这应该输出类似下面的内容:

    rvm rubies
    
    =* ruby-1.9.3-p286 [ x86_64 ]
    
    # => - current
    # =* - current && default
    #  * - default
    

    如果没有,请尝试运行rvm use 1.9.3 --default

  3. 当尝试以 root 身份运行脚本时,请务必使用rvmsudo ./yourscript.rb而不是sudo ./yourscript.rb,这可确保它设置了正确的$PATH

请让我知道上述三个步骤的结果。

答案2

我添加了#!/home/homeuser/.rvm/bin/ruby而不是#!/usr/bin/env ruby。所以我猜这意味着/usr/bin/env指向系统 ruby​​,而不是任何 rvm ruby​​。

问题解决了,不过如果能够使用它就更好了#!/usr/bin/env ruby,这样我就可以将我的 ruby​​ 脚本从台式机移动到笔记本电脑而无需更改#!/home/homeuser/.rvm/bin/ruby(由于用户名不同,桌面上的路径略有不同)。也许是符号链接?

相关内容