From: Katsuyuki Komatsu Date: 1999-08-05T12:26:48+09:00 Subject: [ruby-list:15887] Re: cannot install ruby-gtk into FreeBSD 2.2.x 小松です。 In message of [ruby-list:15883] Re: cannot install ruby-gtk into FreeBSD 2.2.x on 1999/8/5 01:02:20 matz@netlab.co.jp (Yukihiro Matsumoto) wrote: |定数 RUBY_INTERPRETER に rb_argv0 の値を入れるだけで良いんで |すか? それなら一瞬ですが、それが本当に欲しいものなのかしら? 本当に欲しいものはrubyを起動するためのフルパスなんですが、 全ての場合に正しいパスを取得するのは、OSにその機能がない 限り無理だと思います。 たとえば、以下のようなwhich.rbが失敗する例とか。 ということで、適当な妥協点を見つけたいなと思っています。 それはそれとして、perlの$^X相当の機能は欲しいと (^^; $^Xとフルパスの両方が取れるともっとうれしい。 OSのサポートとしては、たとえばWin32ならGetModuleFileName() というAPIがあります。 % cat rubywrap.c int main(int argc, char *argv[]) { chdir("/usr/local/lib/ruby/1.3"); if (execvp("ruby", argv) < 0) { perror("execvp"); return 1; } return 0; } % gcc -o rubywrap rubywrap.c % pwd /tmp % ./rubywrap -ve 'puts RUBY_INTERPRETER; puts Dir.pwd' ruby 1.3.6 (1999-07-28) [sparc-solaris2.5.1] ./rubywrap /usr/local/lib/ruby/1.3 % ( cd /usr/local/lib/ruby/1.3 ; which.rb ./rubywrap ) % # そういえばwhich.rbで、PATHをsplitした要素が""なら「.」とみなす # というのが入ってない。 |また、インタプリタへの生の引数が欲しいって話も聞こえたような |気がするんですが。 そちらは cd /usr/local/bin ./ruby -X/home/lang/ruby-ext/gtk extconf.rb のような例では、カレントディレクトリを特定できないので すくなくとも今回の目的のためにはつかえません。 絶対パスで起動してもらうか、起動時のカレントディレクトリを とれるようにするか、rubyのフルパスが取れるようにするか…… # でも欲しいと思う方はいるでしょうね。 # 欲しい方はリクエストしましょう。 -- 小松克行 / Katsuyuki Komatsu