だから私はcgi Rubyスクリプトを作成していて、スクリプトファイルの先頭に次のものがありました。
#!/usr/bin/env Ruby
require 'rubygems'
require 'action_pack'
require 'cgi'
「/ usr/bin/env:Ruby:No such file or directory」エラーとGoogle検索を取得しなかった数時間後、システムRuby 1.8.7をアンインストールしました(1.9.3もありました Sudo apt-get purge Ruby rubygems を実行して、rvm経由でインストールします。それでもエラーが発生します。 「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
デスクトップに同じセットアップがあり、同じ問題はありません。
/usr/bin/env Ruby
はRVM Rubyを指している必要があります。
しかし、設定を確認しましょう
~/.profile
の内容を確認します。次の2行が含まれているはずです。
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
を実行してみてください
スクリプトをルートとして実行しようとするときは、必ずrvmsudo ./yourscript.rb
の代わりにSudo ./yourscript.rb
を使用してください。これにより、正しい$PATH
が設定されます
上記の3つのステップの結果を教えてください。
#!/home/homeuser/.rvm/bin/Ruby
の代わりに#!/usr/bin/env Ruby
を追加しました。だから、これは/usr/bin/env
がシステムRubyを指し、rvmルビーを指すのではないことを意味すると思います。
問題は解決しましたが、#!/usr/bin/env Ruby
を使用できると便利ですが、Rubyスクリプトをデスクトップからラップトップに移動するには、#!/home/homeuser/.rvm/bin/Ruby
(ユーザー名が異なるためにデスクトップ上のパスが少し異なる)を変更する必要がありません。たぶんシンボリックリンク?