[問題] process繼承問題

看板Linux作者 (Orah~)時間8年前 (2017/08/26 18:20), 8年前編輯推噓0(0012)
留言12則, 2人參與, 最新討論串1/1
在這請教關於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小點 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.107.85 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1503742839.A.88E.html ※ 編輯: Tverous (49.159.107.85), 08/26/2017 18:21:21 ※ 編輯: Tverous (49.159.107.85), 08/26/2017 18:37:16

08/26 19:14, , 1F
{ ..; } 那只是 group command, 還是在當下shell下執行
08/26 19:14, 1F

08/26 19:14, , 2F
() 那是開新的 sub shell 去執行
08/26 19:14, 2F

08/26 19:15, , 3F
所以既然是在當下 shell process 執行就算是正常情況
08/26 19:15, 3F

08/26 19:38, , 4F
cd 這個命令本身就是 shell 內建命令,不是新開一個
08/26 19:38, 4F

08/26 19:39, , 5F
child process 去運作,你書上應該是說外部程式執行
08/26 19:39, 5F

08/26 20:07, , 6F
那請問不可以說cd它是init的child process嗎?
08/26 20:07, 6F

08/26 20:17, , 7F
或是shell的child process?
08/26 20:17, 7F

08/26 20:46, , 8F
你想得太複雜了,你目前命令列操作環境是在 shell 下
08/26 20:46, 8F

08/26 20:47, , 9F
cd 就只是該 shell 內可以識別的內建命令
08/26 20:47, 9F

08/26 20:50, , 10F
所以該 shell 只是把自己工作目錄切換到指定路徑而已
08/26 20:50, 10F

08/26 20:51, , 11F
建議樓主可以先瞭解shell內建命令與外部程式命令差別
08/26 20:51, 11F

08/26 22:58, , 12F
原來如此 大概了解了 非常感謝前輩
08/26 22:58, 12F
文章代碼(AID): #1PeKjtYE (Linux)
文章代碼(AID): #1PeKjtYE (Linux)