在Python中,你可以做到
>>> import sys
>>> sys.executable
'/usr/bin/python'
Run Code Online (Sandbox Code Playgroud)
获取可执行文件的位置.你能用内置于Ruby的东西做同样的事情吗?它可以是一个特殊的变量,方法等.
如果没有,那么以跨平台方式确定ruby可执行文件位置的最干净,最可靠的方法是什么?
相关:
在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)
有比这更多的信息,所以值得运行我上面添加的代码,看看有什么可用.