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自体は、すべての引数を 1 つにまとめます。

4

1 に答える 1

2

これにより、サブシェルを呼び出さずに現在のファイルが実行されます。

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

編集:もちろん、スクリプトで現在の作業ディレクトリを変更している場合は壊れます。ただし、これは簡単に回避できます。

于 2012-10-17T15:31:59.207 に答える