まつもと ゆきひろです

In message "[ruby-dev:17169] Re: argv[0]"
    on 02/05/21, Tanaka Akira <akr / m17n.org> writes:

|えぇと、これほど反応が出るとは思ってもみなかったのですが、まぁ素直に喜
|んでおくことにしてまとめます。

|出た案は
|
|RUBY_INTERPRETER
|RUBY_INTERPRETER_NAME
|RUBY_INTERPRETER_PATH
|RUBY_PROGRAM_NAME
|RUBY_ARGV0
|
|ARGV.program_name
|
|Process.argv
|Process.progname
|
|くらいだと思います。

まとめていただいてありがとうございます。

|# まつもとさんの基準にあうものが一つでもあるといいんですが...

ありていにいってしまうとありませんでした(泣)。

argvという名前はインタプリタに属するのでembedされた場合にも
使えるProcessの属性(メソッド)にはあまりしたくありません。

RUBY_PROGRAM_NAMEは結構良いのですが、PROGRAMの意味するものが
Rubyのスクリプト($0と同じ)か、インタプリタかの違いが明確でな
いように思いました。English.rbの$0の別名は$PROGRAM_NAMEだし。

かといって、RUBY_INTERPRETER_NAMEでは、embed環境で無意味です
しねえ。

そこで、RUBY_EXACUTABLE_NAMEはどうでしょう。_PATHでないのは、
execにだまされる可能性によりpathでないから、という気持ちを表
現しているのですが。これはembed(通常はインタプリタのmain)側
で定義するので、embedするプログラムはこの定数を

  * 定義しない
  * 自分のargv[0]をセットする

のいずれかを選択するわけですね。

                                まつもと ゆきひろ /:|)