小松です。

In message of [ruby-list:15867] Re: cannot install ruby-gtk into FreeBSD 2.2.x
    on 1999/8/4 00:44:48 gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:
|えーっとえーっとわたなべさんもいうように今の問題は別にしても 
|$^X が欲しいというのはあったりしますよね ^^;

そですね。わたしも欲しいです。

|# しかしまつもとさんは今日はいないんだっけ。実装的に問題なけ
|# れば [ruby-list:15843] は採用して欲しいのだけど。もう無理??

ruby.cの#include <fcntl.h>もio.cと同様に#if defined(HAVE_FCNTL_H)
で囲む必要があると思います……とruby.cの別の問題を書いておいて、
「ruby.cをさわるならごいっしょに[ruby-list:15843]もいかがですか?」
とお願いしてみましょうか。

|それは気になってはいましたが、UNIXモデルでは実行ファイルが自
|身の場所を知る方法ってないと思うです、たぶん。ってわけで書い
|てみました。File::which("ls") => ["/bin/ls"] というものです。

相対パス指定がちょっと (^^;

% ./ruby
./ruby: Command not found
% ./ls
./ls: Command not found
% which ./ruby ./ls
./ruby not found
./ls not found
% which.rb ./ruby ./ls
/usr/local/bin/./ruby
/usr/bin/./ls
% which.rb -a ./ruby ./ls
/usr/local/bin/./ruby
/usr/bin/./ls
/usr/ucb/./ls
% which.rb -s not-found ; echo $status
1
% which.rb -s ./ruby ; echo $status
0
% which.rb -help
which.rb:32: undefined local variable or method `stderr' for #<Object:0x5a4c8> (NameError)
% 

|>mswin32では、常にフルパスがくるので、
|>    RUBY = #{RUBY_INTERPRETER}
|>でよいですけどね。
|
|それはそれで便利な仕様ですね。

忘れてましたが、これはCOMMAND.COMあるいはCMD.EXEの機能なので
cygwinのbashでmswin32の./rubyを起動した場合のケースではUNIX
と同様の対処が必要です。

すると、which.rbにもdosishの対策が必要かも。

bash-2.02$ ./ruby -ve "puts RUBY_INTERPRETER; puts ENV['PATH']"
ruby 1.3.6 (1999-07-28) [i386-mswin32]
./ruby
c:\CYGWIN~1\H-I586~1\bin;C:\WINNT\system32;C:\WINNT;C:\USR\BIN;C:\USR\LOCAL\BIN;C:\PERL\BIN;C:\HOME\BIN
bash-2.02$ 

--
小松克行 / Katsuyuki Komatsu <komatsu / sarion.co.jp>