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