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

Non*_*ona 7 10.04 ruby rails

所以我正在制作一个 cgi ruby​​ 脚本,并在脚本文件的顶部有以下内容:

#!/usr/bin/env ruby
 require 'rubygems'
 require 'action_pack'
 require 'cgi'
Run Code Online (Sandbox Code Playgroud)

在几个小时没有收到“/usr/bin/env: ruby​​: No such file or directory”错误和谷歌搜索后,我卸载了我的系统 ruby​​ 1.8.7(我也通过 rvm 安装了 1.9.3)sudo apt-get purge 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
Run Code Online (Sandbox Code Playgroud)

我的桌面上有同样的设置,但我没有同样的问题。

Koe*_*en. 7

/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
    
    Run Code Online (Sandbox Code Playgroud)
  2. 其次,检查您安装的 ruby​​ 版本:

    rvm list
    
    Run Code Online (Sandbox Code Playgroud)

    这应该输出如下内容:

    rvm rubies
    
    =* ruby-1.9.3-p286 [ x86_64 ]
    
    # => - current
    # =* - current && default
    #  * - default
    
    Run Code Online (Sandbox Code Playgroud)

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

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

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


Non*_*ona 4

我添加了#!/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(由于用户名不同,桌面上的路径略有不同)。也许是符号链接?