システム全体にrvm + Rubyをインストールしました。
which Ruby
/usr/local/rvm/rubies/Ruby-2.1.1/bin/Ruby
そして:
/usr/bin/env: Ruby: No such file or directory
それ以外はすべて正常に動作し、実行可能ファイルにRubyの直接パスを入れると正常に動作します。
PATHは、env
プログラムが実行可能ファイルを検索するために使用するものです。このユーザーごとに($ HOME/.bashrcで)変更できます。そのためには、nano $HOME/.bashrc
を実行し、最後の行に移動して、新しい行を追加します
export PATH=$PATH:/usr/local/rvm/rubies/Ruby-2.1.1/bin
システムレベルで変更するには、Sudo nano /etc/login.defs
を選択し、この行を変更します
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
に
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/rvm/rubies/Ruby-2.1.1/bin
これはやや古い質問であることに気づきましたが、この問題を特定するために1日以上を費やしました。そして、rvm
ラッパーを使用して、ベストプラクティスの確実なタイプのソリューションだと思いました。
/usr/bin/env Ruby
は、選択したRubyバージョンを使用する機能を提供するため、ハードコードされたディレクトリパスを使用して実行可能なシェルスクリプト(/bin
内)を編集する必要はありません。それらを機能させる(これは他の場所で修正案として見たことがあります)。
上記の回答で述べたように、キーは$PATH
の/etc/environment
設定ですが、別の解決策を思いつきました。
RVMは、インストールされているすべてのRubyバージョンのシンボリックリンクディレクトリと、/usr/local/rvm/wrappers/
のエイリアスを提供します。
使用するRubyバージョンに関連付けられているラッパーディレクトリを使用するように$PATH
varを設定した場合.
PATH="/usr/local/rvm/wrappers/Ruby-1.9.3-p547:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
/usr/bin/env Ruby_command
が機能するようにRVM環境を設定します。
少なくともこれでこの問題は解決しました。これにより、誰かが時間を節約できることを願っています。
私は最近この問題に直面し、異なるアプローチをとったので、共有することを考えました。これは、上記のディレクトリにRubyファイルが存在しない場合に発生します。そのため、ディレクトリにRubyファイルへのシンボリックリンクを作成すると、エラーが修正されます。
cd/usr/bin/env
ln -s /usr/local/rvm/rubies/Ruby-2.1.1/bin/Ruby
同じエラーが出ました
#!/usr/bin/env Ruby
はスクリプトの先頭にあり、
rvm /usr/bin/env: Ruby no such file error
スクリプトを実行した場合。
私の解決策は見つけるのが難しいほど簡単でした:
スクリプト/ソースコードエディターでの改行のエンコードは、「ウィンドウスタイル(CR + LF)」に設定されていました。
「unixスタイル(LF)」に切り替えてスクリプトを再度保存すると、エラーはなくなりました。
キャリッジリターン(CR)記号が「Ruby」の後ろに残っているようで、Ruby filname.script
はありませんが、エラーにつながるRuby\R filename.script
はありません。