まつもと ゆきひろです

In message "[ruby-list:18501] 関数 ` 	の動作"
    on 99/11/10, Keisuke CHIBA <chiba / lab.imagica.co.jp> writes:

|関数 ` についての質問です.

というかコマンド起動の挙動についてですね。

|どうしてこういうことが起こるのでしょうか? 

簡単に言うとシェルのメタ文字(*?{}[]<>()~&|\\$;'`"\n)を含まな
い文字列をコマンドとして実行しようとすると、shを経由せずRuby
が直接コマンドを実行します(UNIX環境では)。

ということで、このような状況ではシェルの組込みコマンド(type
はそういうものです)は使えません。2番目の例ではメタ文字を含ん
でいたのでshが起動され、組込みコマンドが使えたわけですね。

|また, コマンドの絶
|対パスを知るためのもっとよい方法があれば教えて頂けると幸いで
|す.

ちょっと考えて思い付くのは

 (1) typeの代わりにwhichを使う
 (2) 環境変数PATHを解析して自分で調べる

     def which(cmd)
       ENV["PATH"].split(":").each{|path| 
         fpath = path+"/"+cmd;
         return fpath if File::executable?(fpath)
       }
       return nil
     end

くらいですかね。
                                まつもと ゆきひろ /:|)