0

Bash 的简单等价物是什么

exec $0 $*

在红宝石?

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本身会将所有论点塞在一起。

4

1 回答 1

2

这应该在不调用子shell的情况下执行当前文件:

exec([ File.absolute_path(__FILE__), __FILE__ ], *ARGV)

编辑:当然,如果您要更改脚本中的当前工作目录,它会中断。不过,这很容易解决。

于 2012-10-17T15:31:59.207 回答