Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何可靠地发现Ruby可执行文件的完整路径?_Ruby_Scripting - Fatal编程技术网

如何可靠地发现Ruby可执行文件的完整路径?

如何可靠地发现Ruby可执行文件的完整路径?,ruby,scripting,Ruby,Scripting,我想编写一个脚本,打包成一个gem,它将修改它的参数,然后exec使用修改后的参数创建一个新的ruby进程。换句话说,它类似于一个shell脚本,它修改它的参数,然后执行一个exec$shell$*。为了做到这一点,我需要一种健壮的方法来发现正在执行当前脚本的ruby可执行文件的路径。我还需要获得传递给当前进程的完整参数——Ruby参数和脚本参数 如果要在linux上检查:读取文件: /proc/PID/exe /proc/PID/cmdline 其他有用的信息可以在/proc/PID di

我想编写一个脚本,打包成一个gem,它将修改它的参数,然后
exec
使用修改后的参数创建一个新的ruby进程。换句话说,它类似于一个shell脚本,它修改它的参数,然后执行一个
exec$shell$*
。为了做到这一点,我需要一种健壮的方法来发现正在执行当前脚本的ruby可执行文件的路径。我还需要获得传递给当前进程的完整参数——Ruby参数和脚本参数

如果要在linux上检查:读取文件:

  • /proc/PID/exe
  • /proc/PID/cmdline

其他有用的信息可以在/proc/PID dir中找到,当然,对于脚本参数,可以使用
ARGV

Rake源代码如下所示:

  RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']).
    sub(/.*\s.*/m, '"\&"')

不要用内联答案更新你的问题,只需在你自己的问题中添加答案即可。这样人们就可以投票支持你的答案。请注意,你可能还需要
require'rbconfig'
Config不推荐使用。使用RbConfig。自从Ruby 2.2以来,
Config
已被删除。现在必须是:``RUBY=File.join(Config::Config['bindir'],Config::Config['RUBY\u install\u name'])。子(/.*\s.*/m,“\&”)```