什么是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
似乎需要进行shell扩展,如果它可以将命令与其参数分开。
ARGV.join
本身会将所有参数整合为一个。
答案 0 :(得分:2)
这应该在不调用子shell的情况下执行当前文件:
exec([ File.absolute_path(__FILE__), __FILE__ ], *ARGV)
编辑:当然,如果您要更改脚本中的当前工作目录,它会中断。不过,这很容易解决。