アカウント名:
パスワード:
環境変数ではなくて環境と言いたかっただけなんじゃないかと。
# sh組込みコマンドはすべて外部コマンドとしても実装しないとPosix不適合らしいぞ ## goto が外部コマンドだったり(いつの話だ)
いいっぱなしもナニなのでちょっと Google 様に聞いてみましたが、 どうやら本当らしいです [dbforums.com]。 が、POSIXの規格をみたわけではないんで確定的なことがいえません、ごめんなさい。
... で、必ずしも内部コマンドと同じ機能を外部コマンドとして実装しなければならない、 ということではないようです。 実際、cd のほかにも exec, set, ulimit, eval, . など、内部コマンドでしか実装できない コマンドはいろいろあるわけですし。
# うちの RHL には /usr/bin/cd はないので POSIX 互換ではないらしい :)
# おまけ: Google 様のご託宣をめくってみたら Tru64 UNIX の cd(1) らしい [uwm.edu] ものを発見。`Note' の表現に注意されたし。
POSIX では,ユーティリティ (コマンドとは呼ばない) に対していろいろ規定がありまして,その中に組込みユーティリティ (built-in utility) というのもございます. 組込みユーティリティには特殊 (special) と通常 (regular) との区別があり, 特殊は,組込みでしか実現できない,変数の処理やスクリプトの制御に関わるものです.具体的には,次の通り:
break : continue . eval exec exit export readonly return set shift times trap unset
通常の組込みユーティリティが,実行ファイル版も用意されているのは,exec システムコールの引数に渡せるようにするためです.(cd 等のように,組込みでないと意味のないようなものもありますが)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
ls (スコア:1)
余裕があるときは ls -l で。
たまにSL [linet.gr.jp]が横切っていくこともありますが。
Re:ls (スコア:0)
Re:ls (スコア:1, 参考になる)
手元の環境では、which cdとやっても見つからないと言われる。
SunOSでは、which cdとやると/bin/cdと出てくるようですが…。
Re:ls (スコア:2, 参考になる)
なぜなら、子プロセスから親プロセスの環境変数は変更できませんので。
SunOSの/usr/bin/cdはカレントディレクトリに設定できるかのチェックに使う [sun.com]とのことなので別物かと。
Re:ls (スコア:2, 参考になる)
>なぜなら、子プロセスから親プロセスの環境変数は変更できませんので。
環境変数がどうのこうのというより、それ以前の本質(?)的問題として、
cdは*shの「プロセスの状態」を変更するコマンドだから、built-inにしか出来ないわけですよね。
Uinxのアーキテクチャつーかやり方だと、プロセスの状態はそのプロセス自身にしか変えられない…
#OOP好きから見ると
Re:ls (スコア:1)
環境変数ではなくて環境と言いたかっただけなんじゃないかと。
# sh組込みコマンドはすべて外部コマンドとしても実装しないとPosix不適合らしいぞ
## goto が外部コマンドだったり(いつの話だ)
Re:ls (スコア:1)
今回のcd(プロセス「の」状態の変更を命じるタイプ)の例で判るように、
あらゆる「コマンド」が外部コマンドとして実装されるのが合理的だとは限らないっすよね。
例えばcdを外部コマンドにしようと思ったら、少なくとも命令の影響範囲をプロセス壁越えさせなきゃならん。
それって凄く非Unix的な行為のような…
Posixの事情は俺は存じませんが、単純にというか一般的に
「すべて外部コマンドとしても実装しないとHogehoge不適合」というクダリだけを読むと、
hogehogeという仕様(規格)ってDQN仕様なのかな?と疑ってしまいます。
こういうのって得てして、規格制定(者)の浅慮だった、というオチが予測されるんで。
Posixだと(例外的に)大丈夫、なのかどうかは俺は存じません。
Re:ls (スコア:1)
いいっぱなしもナニなのでちょっと Google 様に聞いてみましたが、 どうやら本当らしいです [dbforums.com]。 が、POSIXの規格をみたわけではないんで確定的なことがいえません、ごめんなさい。
... で、必ずしも内部コマンドと同じ機能を外部コマンドとして実装しなければならない、 ということではないようです。 実際、cd のほかにも exec, set, ulimit, eval, . など、内部コマンドでしか実装できない コマンドはいろいろあるわけですし。
# うちの RHL には /usr/bin/cd はないので POSIX 互換ではないらしい :)
# おまけ: Google 様のご託宣をめくってみたら Tru64 UNIX の cd(1) らしい [uwm.edu] ものを発見。`Note' の表現に注意されたし。
Re:ls (スコア:1)
POSIX では,ユーティリティ (コマンドとは呼ばない) に対していろいろ規定がありまして,その中に組込みユーティリティ (built-in utility) というのもございます. 組込みユーティリティには特殊 (special) と通常 (regular) との区別があり, 特殊は,組込みでしか実現できない,変数の処理やスクリプトの制御に関わるものです.具体的には,次の通り:
break : continue . eval exec exit export readonly return set shift times trap unset
通常の組込みユーティリティが,実行ファイル版も用意されているのは,exec システムコールの引数に渡せるようにするためです.(cd 等のように,組込みでないと意味のないようなものもありますが)