bash
的简单等同是什么exec $0 $*
在Ruby?
中http://www.ruby-doc.org/core-1.9.3/kernel.html#method-i-exec
编辑
答案的一部分似乎是:
exec( "/bin/ls", *ARGV) # credits: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/13379
因此,接下来,变量$0
是否会保留当前脚本的完整名称和路径,或者Ruby二进制?在 IRB 下,仅" IRB"返回,这意味着我至少需要找到并预先准备路径。
条纹上的另一个解决方案来自https://stackoverflow.com/a/2966988/1069375
cmd_line = "#{$0} #{ARGV.join( ' ' )}"
但是,如果可以将命令与其参数分开,则尝试exec cmd_line
似乎会受到外壳扩展的约束。ARGV.join
本身将所有参数都当作一个。
这应该在不调用子壳的情况下执行当前文件:
exec([ File.absolute_path(__FILE__), __FILE__ ], *ARGV)
编辑:当然,如果您要更改脚本中的当前工作目录,它会断开。但是,这很容易解决。