OSXでRuby1.8.7を使用しています。Rubyインタープリターはどこにありますか?私の目標は、Ruby、インタプリタ言語、およびインタプリタ/構文解析についてさらに学ぶことです。
3 に答える
ターミナル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
、パスを検索することができます。
whereis ruby
ターミナルウィンドウで教えてくれます
の下に
System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
あり、にシンボリックリンクされて
いるはず/usr/bin/ruby
です。
which ruby
システムに1つ以上の実装がある場合、実行すると、使用されているルビーの正確な場所がわかります。