9

OSXでRuby1.8.7を使用しています。Rubyインタープリターはどこにありますか?私の目標は、Ruby、インタプリタ言語、およびインタプリタ/構文解析についてさらに学ぶことです。

4

3 に答える 3

15

ターミナルwhich rubyに入力すると、実行されるルビーがどこにあるかを確認するために実行できます。ruby

実行可能ファイルに関する詳細情報が必要な場合は、次のコマンドを実行できます。

$ ls -l $(which ruby)
lrwxr-xr-x  1 root  wheel  76 Nov  8 12:56 /usr/bin/ruby -> ../../System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby

つまり、を実行しwhich ruby、その結果をに渡します。これによりls -l、実際にはRubyフレームワークのバイナリへのシンボリックリンクであることがわかります。fileまた、それがどのような種類のファイルであるかを調べるために使用することもできます。

$ file $(which ruby)
/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture x86_64):    Mach-O 64-bit executable x86_64
/usr/bin/ruby (for architecture i386):  Mach-O executable i386

Rubyが存在する場所をハードコーディングする代わりに、スクリプトからユーザーのパスにあるRubyを確実に実行する場合は、スクリプトの先頭で次のインタープリターディレクティブを使用できます。

#!/usr/bin/env ruby

これが機能するのは、ほとんどすべての最新のシステムに/usr/bin/env、パスに基づいて渡されたユーティリティを実行する実行可能ファイルがあるためです。/usr/bin/rubyしたがって、スクリプトにハードコーディングする代わりにenv、パスを検索することができます。

于 2011-11-27T17:08:42.437 に答える
3

whereis rubyターミナルウィンドウで教えてくれます

于 2011-11-27T17:02:15.283 に答える
2

の下に System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
あり、にシンボリックリンクされて いるはず/usr/bin/rubyです。

which rubyシステムに1つ以上の実装がある場合、実行すると、使用されているルビーの正確な場所がわかります。

于 2011-11-27T17:05:27.537 に答える