我正在使用OS X上的Ruby 1.8.7。 Ruby解释器位于何处? 我的目标是了解更多关于Ruby、解释语言和解析/解释的知识。
你可以运行which ruby
来查找将在终端中键入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
路径下有一个可执行文件,它将根据您的路径执行您传递给它的实用程序;所以,您可以让env
为您搜索路径,而不是在脚本中硬编码/usr/bin/ruby
。
whereis ruby
,将告诉您Ruby的位置。你应该能在以下路径找到它:System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
并且它应该是符号链接到/usr/bin/ruby
。
如果你的系统上有一个或多个Ruby实现,运行which ruby
将会给你正在使用的ruby的确切位置。
which
比whereis
更可靠。which
能够找到实际在您的路径中的命令,而whereis
只会查找某些标准目录;如果您的路径中有非标准目录(比如 MacPorts 的/opt/local/bin
目录),whereis
就无法找到您要查找的内容。 - Brian Campbell