[PHP-users 5431] Re: コマンドライン版実行時のオプションエラー

Masaki Fujimoto php-users@php.gr.jp
Fri, 15 Feb 2002 15:57:13 +0900


ふじもとです。

すみません、嘘書いてたかもしれません。

On Fri, 15 Feb 2002 15:15:30 +0900
Youichi Iwakiri <yiwakiri@st.rim.or.jp> wrote:

> いわきりです
-snip-
> ありゃりゃ、私の知り得るところのshellの動作は
> #!/hoge/program argument-lists ...
> 
> に関してはトランスペアレンシーに機能すると思っていました。
> 違う環境もあるのですね。出来ればそれらのshellを紹介して頂けると
> ありがたいです。

僕もそう思っていて、家のRedhat 7.2で試してみたら早川さんと同じ結果が出て
驚いてしまったのです。で、今ちょっとためしてみたところ、

FreeBSD 4.5-stable
FreeBSD 2.2.8-stable

ではいわきりさんと同様の結果になりますが、

Redhat 6.2
Redhat 7.2

だと一つの引数として渡されます。Solaris(Ultra5)に至っては最初の引
数だけしか送られてきません。つまり

#!/foo/args -a -b -c

とすると

argv[0]: /foo/args
args[1]: -a
args[2]: ./test

となってしまいます。いまさらながら驚きました。BSD系とSystemV系で動作が違
うんでしょうか?調べてみればきっとBugDBにあがってると思いますが...

# なんだか無知をさらけだしているような

あと、patchの件ですが「特定の環境専用」ならいわきりさんのおっしゃる通り
簡単ですが(ただparseすればいいだけなので)、汎用的なものとなるとちょっと
難しいかな、という気がするのですが。


--
藤本 真樹

アストラザスタジオ
fujimoto@studio.co.jp
fujimoto@php.net