私はこれに何時間もこだわっています:
cd /dir1
(cd $HOME); pwd;
ホーム ディレクトリに移動せず、pwd
まだ表示されるのはなぜですか?/dir1
私はこれに何時間もこだわっています:
cd /dir1
(cd $HOME); pwd;
ホーム ディレクトリに移動せず、pwd
まだ表示されるのはなぜですか?/dir1
括弧はサブシェルを開始します。シェルは を呼び出しfork
、括弧内のコマンドはサブプロセスで実行されます。親プロセスは、サブプロセスが終了するのを待ってから、実行を再開します。だから何が起こっているのですか:
cd /dir1
: シェルが実行しchdir("/dir1")
ます。fork
、親プロセスは子プロセスが終了するのを待ちます。cd $HOME
: サブシェルが実行しchdir("/home/jurgen")
ます。wait
、親の呼び出しが戻ります。pwd
: シェルは現在のディレクトリを出力し/dir1
ます。