From: nobu.nakada@... Date: 2002-05-18T18:13:35+09:00 Subject: [ruby-dev:17137] Re: argv[0] なかだです。 At Sat, 18 May 2002 17:56:42 +0900, Minero Aoki wrote: > > ふと ruby インタプリタの C における argv[0] を知りたくなったんですが、 > > リファレンスマニュアルの組込み変数、組込み定数を眺めた限りでは見つかり > > ませんでした。 > > > > これを得る方法ってないんでしょうか? > > 組み込み変数のところにある > > $0 > > 現在実行中のRubyスクリプトの名前。OSによってはこの変数に代入すると > ps(1) の出力が変化します。この機能はプログラムの現在の状態を表示するの > に便利です。(覚え方: sh や kshと同じ) > > がそうです。 スクリプト名ではなく、Rubyインタプリタの名前がほしいのでは。拡 張ライブラリからならrb_argv0というのがありますが、この変数使わ れてないですね。 # それと、1.7のset_arg0()の#endifは一行ずれているような気が。 こういうことではないかと思うんですが。 Index: ruby.c =================================================================== RCS file: /cvs/ruby/src/ruby/ruby.c,v retrieving revision 1.58 diff -u -2 -p -r1.58 ruby.c --- ruby.c 2002/05/14 06:22:26 1.58 +++ ruby.c 2002/05/18 07:35:00 @@ -942,6 +942,7 @@ set_arg0(val, id) origargv[i] = 0; } -#endif rb_progname = rb_tainted_str_new2(origargv[0]); +#endif + OBJ_FREEZE(rb_progname); } @@ -952,4 +953,5 @@ ruby_script(name) if (name) { rb_progname = rb_tainted_str_new2(name); + OBJ_FREEZE(rb_progname); ruby_sourcefile = rb_source_filename(name); } @@ -1047,4 +1049,5 @@ ruby_process_options(argc, argv) dln_argv0 = argv[0]; #endif + rb_define_global_const("RUBY_INTERPRETER", rb_progname); proc_options(argc, argv); -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦