行程是否繼承邏輯和實體工作目錄?

行程是否繼承邏輯和實體工作目錄?

我知道當一個進程啟動時,它會繼承其父進程的工作目錄。但它是同時繼承邏輯工作目錄和實體工作目錄還是僅繼承實體工作目錄?

答案1

嗯,有點像。 「邏輯」工作目錄包含在環境變數中PWDenviron(7)說它是“由某些外殼設置”,所以顯然取決於應用程式。另一個問題是其他程式是否讀取它:

/tmp$ ln -s ~ link  
/tmp$ cd link  
/tmp/link$ bash -c "pwd"
/tmp/link
/tmp/link$ zsh -c "pwd" 
/home/itvirta
/tmp/link$ dash -c "pwd"
/tmp/link

Bashdash似乎指望它,但zsh事實並非如此(在我的系統上,我確信它是可配置的)。

答案2

取得cwd系統呼叫返回物理路徑名,如POSIX規定

路徑名不應包含點、點-點或符號連結的元件。

Linux 似乎使用比名稱更低等級的機制來傳遞 CWD,因為您可以在另一個程式將目錄用作其 CWD 時重命名該目錄。

相關內容