因此我编写了一个 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 rubygems。我仍然会收到错误。当我输入“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。
但是让我们检查一下你的设置
检查你的内容
~/.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
其次,检查你安装的 ruby 版本:
rvm list
这应该输出类似下面的内容:
rvm rubies =* ruby-1.9.3-p286 [ x86_64 ] # => - current # =* - current && default # * - default
如果没有,请尝试运行
rvm use 1.9.3 --default
当尝试以 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
(由于用户名不同,桌面上的路径略有不同)。也许是符号链接?