アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日本発のオープンソースソフトウェアは42件 -- ある官僚
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 (スコア:0)
> 少ししてbuilt-inじゃなきゃならんことに気付いて、そう直した
これ [freebsd.org]
Re:ls (スコア:1)
> 1. もともと UNIX はマルチプロセスではなかった。
なるほど。当初は$cwdという情報は
ログインコンテキストかなんか(当時のUnixの姿を知らないので、はずしてたら御免)が持つデータだったんですね。
#以下、U言語 [esm.co.jp]ね。
#なお、5文字以上の「=」や「-」の繰り返しがスラドに拒絶されるようなので、オリジナルと違って見栄えが悪いですが4文字に詰めました。
====
ログインコンテキスト
----
- cwd: string
- ログインプロセス: pid_t
----
+ cd(new_cwd:string)
====
====
プロセス
----
- self: pid_t ###これが有ったかどうかは俺は存じません
----
====
で、
ログインコンテキスト---(1)プロセス #### 同時にはたかだか1つのインスタンスしか持てない
だったと。
cdは、ログインコンテキスト「の」状態を変えるような命令をログインコンテキストに投げるコマンド、
だったのでしょうね。
で、マルチプロセスになったら、上記のクラス図(^^;を
以下のようにリファクタリングする(実用上の)必要が有ったわけだけど、
(御大たちの頭をもってしても)その変更の必要性に「しばらく」気付かなかった、ってなところでしょうか。
プロセス---(1)ログインプロセス
プロセス---(*)プロセス #### プロセスの親子関係ね。
====
ログインコンテキスト
----
- ログインプロセス: pid_t
----
====
====
プロセス
----
- self: pid_t
- parent: pid_t
- cwd: string
----
+ cd(new_cwd:string)
====
こうして、プロセスのサブクラス(?)であるシェル類には、
build-inかつ「ユーザInteractiveな」cdコマンドが必要になったわけですね。
シェル以外の一般のプロセスにもinteractiveじゃないだけでchdir()が有るわけですよね。今は。
Re:ls (スコア:1)
(前半)
>で、
>ログインコンテキスト---(1)プロセス #### 同時にはたかだか1つのインスタンスしか持てない
>だったと。
(後半)
>プロセス---(1)ログインプロセス
>プロセス---(*)プロセス #### プロセスの親子関係ね。
げ!不等号まわりが壊滅してて、クラス間の関連の図が崩壊してる(T_T)
以下が正しい姿です。ええい。面倒だから全角使ってやる。
#ついでにCodeタグもつけてやる
(前半)
で、
ログインコンテキスト<C>---(1)プロセス #### 同時にはたかだか1つのインスタンスしか持てない
だったと。
(後半)
プロセス<|---ログインプロセス ###ふつうはシェル類を割り当てますね
ログインコンテキスト<C>---(1)ログインプロセス
プロセス<>---(*)プロセス #### プロセスの親子関係ね。