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]