POSIXにおけるShebangの解釈についてのシェルショッカーとの議論まとめ
なんでそういう風になってるのか、というところがRationaleにちゃんと書かれるようになっただけ、最近のPOSIXは親切
2016-03-23 17:21:43まあでも、本来、わざわざ規格に「sh蹴るよ」とか書く必然性はないんだよな。関数インターフェースの定義としては蛇足といえば蛇足。
2016-03-23 17:35:11exec*pを使う理由は必然性ではなくて利便性だと思う。PATHから探すのめんどいし、自分で/bin/sh蹴るのもめんどいから使う。必然性を問うならむしろ、そういう面倒くさいことが必要なexecveを使うことに対してなんじゃなかろうか
2016-03-23 17:59:19しかし、あのRationaleに書いてある話、「ヒストリカルな実装」として「exec*p以外ではあらゆるシェルスクリプトをNOEXECとする実装」か「shebangを処理する実装」しか書いてないけど、後者はヒストリカルじゃないと思うのだが
2016-03-23 18:31:13「同じファイルを食わせた時にENOEXECを返す関数と成功する関数がある」というところを、既存の実装に沿って詳細に規定するとああなるけど
2016-03-23 17:41:05実際問題として、呼び出すプログラムが shell script かもしれない場合に exec[vl]e ではなく exec[vl]p を使うべき実用上の理由ってあるんでしょうか?
2016-03-23 17:42:30@kazuho 25年くらい昔はshebangがカーネル実装じゃないOSが残ってたのであったと思いますが、今はないような気がしますねえ。LinuxとOS Xと*BSDとSolarisは大丈夫ですが、AIXその他が今どうなってるかは知りません…でもさすがに大丈夫な気がします。
2016-03-23 17:50:19unspecifiedの解釈
@nalsh unspecified とか undefined とかは規格の専門用語なのでそうですね。ただ execvp()/execlp() のコマンドインタープリター呼び出しの規定に限って言うと、そこまで知らなくても中学英語文法+辞書程度で読み取れそうな気がします。
2016-03-23 16:41:00@n_soda @nalsh よこからごめん。 unspecified や undefined はCSでの計算可能性という概念を教える上では必須だとおもうんですがね。CEの世界だと、基礎の基礎概念をおしえらえていないので、これらの区別が付かないだけで。 [X41]
2016-03-23 16:50:18@hutai @nalsh う、(僕も専門別なので)計算可能性の方面での話は、PとかNPとかの解説で読んだかもしれませんが、すっかり忘れてます… ^^;
2016-03-23 16:57:08@n_soda ごめん。チューニングマシンと言ってしまっていいと思う。Computer ってなんでもできると思い込んでいる人が多いし、今はやりの囲碁のAIなど見ていると万能だと思いこんでいる人(工学での若手もね。)多そうだし。 cc: @nalsh [X41]
2016-03-23 16:59:51@nalsh 計算可能性でも数学的な意味で定義可能ですよ。unspecified って計算可能な集合の外側だし、undefinedだと定義されていない状態が発生として教えれるし。これは、一見大差ないようで、厳密に区別できないとあと続かないし。 @n_soda [X41]
2016-03-23 17:04:46英語の解釈に対する議論
@n_soda ほう、自信満々に言うわけか。危険な奴め。ブーメランが刺さらんといいがな。
2016-03-23 19:03:28