所以我正在制作一个 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 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
Run Code Online (Sandbox Code Playgroud)
我的桌面上有同样的设置,但我没有同样的问题。
/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
Run Code Online (Sandbox Code Playgroud)其次,检查您安装的 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
尝试以 root 用户身份运行脚本时,请务必使用rvmsudo ./yourscript.rb
代替sudo ./yourscript.rb
,这可确保它设置正确的$PATH
.
让我知道以上三个步骤的结果。
我添加了#!/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
(由于用户名不同,桌面上的路径略有不同)。也许是符号链接?
归档时间: |
|
查看次数: |
49781 次 |
最近记录: |