如果您 cd
到$HOME
以外的某些目录并运行exec bash
,则新的bash在上一个shell的工作目录中开始。
新的bash如何知道以前的工作目录是什么?
过程任务结构具有继承的当前工作目录。在Linux上,您可以看到这样的:
ls -l /proc/self/cwd
创建新的外壳时,它继承了父进程的当前工作目录。
它继承了其工作目录,就像每个过程都继承了父母的工作目录。
您认为pwd
程序如何有效?它只是使用getcwd
系统调用获得了自己的工作目录,它从其父母那里继承了。
工作目录是操作系统提供的属性,归因于它们是否想要的过程。
另一个过程(父母)产生的一个过程(儿童)接收产卵过程的工作目录,而无需任何干预。
除了将工作目录作为设计的一部分外,OS还可以将其用于诸如确定过程崩溃时核心转储的位置的事物。