什么是Ruby相当于Python的sys.executable?

ent*_*nto 2 ruby

在Python中,你可以做到

>>> import sys
>>> sys.executable
'/usr/bin/python'
Run Code Online (Sandbox Code Playgroud)

获取可执行文件的位置.你能用内置于Ruby的东西做同样的事情吗?它可以是一个特殊的变量,方法等.

如果没有,那么以跨平台方式确定ruby可执行文件位置的最干净,最可靠的方法是什么?

相关:

the*_*Man 6

在IRB中运行:

require 'rbconfig'

key_length = RbConfig::CONFIG.keys.max{ |a,b| a.length <=> b.length }.length
RbConfig::CONFIG.keys.sort_by{ |a| a.downcase }.each { |k| puts "%*s => %s" % [key_length, k, RbConfig::CONFIG[k]] }
Run Code Online (Sandbox Code Playgroud)

它将输出所有Ruby配置信息的"awesome print"样式列表.

   ALLOCA => 
       AR => ar
     arch => x86_64-darwin10.5.0
ARCH_FLAG => 
  archdir => /Users/greg/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/x86_64-darwin10.5.0
 ARCHFILE => 
       AS => as
  ASFLAGS => 
 BASERUBY => ruby
   bindir => /Users/greg/.rvm/rubies/ruby-1.9.2-p0/bin
Run Code Online (Sandbox Code Playgroud)

bindir是当前运行的Ruby解释器的路径.列表上方是BASERUBY => ruby.

RbConfig::CONFIG.values_at('bindir', 'BASERUBY').join('/')
=> "/Users/greg/.rvm/rubies/ruby-1.9.2-p0/bin/ruby"
Run Code Online (Sandbox Code Playgroud)

检查我的工作:

greg-mbp-wireless:~ greg$ which ruby
/Users/greg/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
Run Code Online (Sandbox Code Playgroud)

有比这更多的信息,所以值得运行我上面添加的代码,看看有什么可用.