如果您將cd
添加到$HOME
以外的某個目錄並運行exec bash
,則新bash將從前一個shell的工作目錄中啓動。exec'ed shell如何知道你的cwd?
新的bash如何知道以前的工作目錄是什麼?
如果您將cd
添加到$HOME
以外的某個目錄並運行exec bash
,則新bash將從前一個shell的工作目錄中啓動。exec'ed shell如何知道你的cwd?
新的bash如何知道以前的工作目錄是什麼?
它繼承其工作目錄,就像每個進程繼承其父目錄一樣。
您認爲pwd
程序如何工作?它只是通過系統調用getcwd
獲得自己的工作目錄,它從父級繼承。
進程任務結構有一個繼承的當前工作目錄。在Linux上,您可以看到它:
ls -l /proc/self/cwd
當您創建新的shell時,它會繼承父進程的當前工作目錄。
工作目錄是由操作系統提供的屬性,歸因於過程是否需要它。
另一個進程(父級)產生的進程(子進程)接收到產卵進程的工作目錄,而沒有任何干預。
除了使用工作目錄作爲其設計的一部分的進程之外,操作系統還可以使用它來處理諸如在進程崩潰時確定核心轉儲的位置等內容。