process問題 - Linux

Table of Contents

在這請教關於process的問題

在your unix/linux the ultimate guide這本書上看到

當一個process繼承他的parent's process時

會連parents's process所執行的當前directory一同繼承

所以不能創造一個process來改變current directory

那想請問那關於cd這個命令不是就跟書上所講的違背了嗎?

因為cd不是就會改變目錄

另外一個問題是

( cd progs ; pwd ) 以及 { cd progs ; pwd ; } 這兩個命令串

第一種僅改變sub-shell的directory

但第二種則是會改變current shell's directory

想請問這兩者為什麼會有這樣的差異? 背後原因又是什麼

在這請教各位前輩 非常感謝

附上原文圖片:

http://imgur.com/a/6ib7K

其中第3小點
--

All Comments

Anthony avatarAnthony2017-08-29
{ ..; } 那只是 group command, 還是在當下shell下執行
() 那是開新的 sub shell 去執行
Xanthe avatarXanthe2017-09-02
所以既然是在當下 shell process 執行就算是正常情況
Hedwig avatarHedwig2017-09-07
cd 這個命令本身就是 shell 內建命令,不是新開一個
Poppy avatarPoppy2017-09-09
child process 去運作,你書上應該是說外部程式執行
Rosalind avatarRosalind2017-09-13
那請問不可以說cd它是init的child process嗎?
Megan avatarMegan2017-09-18
或是shell的child process?
Christine avatarChristine2017-09-18
你想得太複雜了,你目前命令列操作環境是在 shell 下
Rachel avatarRachel2017-09-22
cd 就只是該 shell 內可以識別的內建命令
Wallis avatarWallis2017-09-25
所以該 shell 只是把自己工作目錄切換到指定路徑而已
James avatarJames2017-09-27
建議樓主可以先瞭解shell內建命令與外部程式命令差別
Audriana avatarAudriana2017-09-29
原來如此 大概了解了 非常感謝前輩