如果您进入除并 runcd
以外的某个目录,则新的 bash 在前一个 shell 的工作目录中启动。$HOME
exec bash
新的 bash 如何知道以前的工作目录是什么?
流程任务结构具有继承的当前工作目录。在 Linux 上,你可以看到它是这样的:
ls -l /proc/self/cwd
当你创建一个新的 shell 时,它会继承父进程的当前工作目录。
它继承其工作目录,就像每个进程都继承其父级的工作目录一样。
您认为该pwd
计划如何运作?它只是通过系统调用获得自己的工作目录getcwd
,它从其父级继承。
工作目录是操作系统提供的一个属性,不管他们是否想要它都归属于一个进程。
由另一个进程(父进程)生成的进程(子进程)接收生成进程的工作目录,而无需任何干预。
除了使用工作目录作为其设计的一部分的进程之外,它还可以被操作系统用于诸如在进程崩溃时确定核心转储的位置之类的事情。