Ruby解释器位于哪里?

9
我正在使用OS X上的Ruby 1.8.7。 Ruby解释器位于何处? 我的目标是了解更多关于Ruby、解释语言和解析/解释的知识。
3个回答

15

你可以运行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


3
在终端窗口中输入whereis ruby,将告诉您Ruby的位置。

3
通常来说,whichwhereis 更可靠。 which 能够找到实际在您的路径中的命令,而 whereis 只会查找某些标准目录;如果您的路径中有非标准目录(比如 MacPorts 的 /opt/local/bin 目录),whereis 就无法找到您要查找的内容。 - Brian Campbell

2

你应该能在以下路径找到它:System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
并且它应该是符号链接到/usr/bin/ruby

如果你的系统上有一个或多个Ruby实现,运行which ruby将会给你正在使用的ruby的确切位置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接