From: Tanaka Akira Date: 2004-09-10T00:59:12+09:00 Subject: [ruby-dev:24244] Re: system("") In article <200409071020.i87AK2Um023393@sharui.nakada.niregi.kanuma.tochigi.jp>, nobu@ruby-lang.org writes: > perlや1.8まででもエラー扱いというか失敗扱いではあるんですが、 > 1.9から例外を上げるようになったという違いがあります。-talkでも、 > 後方互換性を損なうのでsystemは元に戻して新しいメソッドを追加し > たほうがいいんじゃないか、という意見は出ています。 しばらく考えたのですが、例外は良くないように思います。 system というのは sh 経由で実行するのが基本で、メタキャラクタがないと きに直接実行するのを最適化だと考えると、 % ruby -e 'system("echoo xxx")' -e:1:in `system': No such file or directory - echoo xxx (Errno::ENOENT) from -e:1 zsh: exit 1 ruby -e 'system("echoo xxx")' % ruby -e 'system("echoo xxx;")' sh: line 1: echoo: command not found というように、メタキャラクタの有無で挙動が変化するのは良くないんじゃな いかと思うわけです。 なお、複数の引数を与えた場合には sh を経由しないので、この理由は適用さ れません。この場合は - 互換性の問題はたしかにあるんですが - 例外でもい いように感じます。 -- [田中 哲][たなか あきら][Tanaka Akira]