[問題] process繼承問題

作者: Tverous (Orah~)   2017-08-26 18:20:36
在這請教關於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小點
作者: kenduest (小州)   2017-08-26 19:14:00
{ ..; } 那只是 group command, 還是在當下shell下執行() 那是開新的 sub shell 去執行所以既然是在當下 shell process 執行就算是正常情況cd 這個命令本身就是 shell 內建命令,不是新開一個child process 去運作,你書上應該是說外部程式執行
作者: Tverous (Orah~)   2017-08-26 20:07:00
那請問不可以說cd它是init的child process嗎?或是shell的child process?
作者: kenduest (小州)   2017-08-26 20:46:00
你想得太複雜了,你目前命令列操作環境是在 shell 下cd 就只是該 shell 內可以識別的內建命令所以該 shell 只是把自己工作目錄切換到指定路徑而已建議樓主可以先瞭解shell內建命令與外部程式命令差別
作者: Tverous (Orah~)   2017-08-26 22:58:00
原來如此 大概了解了 非常感謝前輩

Links booklink

Contact Us: admin [ a t ] ucptt.com