举cd
个例子。同样,这让cd
我想起了这个问题。当我们在终端上输入“cd”并按下回车键时,cd
终端的子进程就会启动,在我看来,所有的事情cd
都是在子进程中执行的cd
。令我困惑的是,如何让它cd
改变其父进程的环境变量?
答案1
cd
没有对其父进程进行任何更改,因为它cd
不是一个进程。
它是一个 shell 内置函数 - 大多数(每个?)shell 都必须改变其目录上下文的构造。
cd
在 bash 上会改变你在 bash 上的 cwd。cd
在 zsh 上也会在 zsh 上执行相同的操作。这是 bash/zsh 所做的。而且它们正在改变自己的上下文。
话虽如此,我认为子进程不可能改变其父进程的环境。应该从理论上讲,通过直接访问内存是可行的,但我假设我们谈论的是现实生活中的场景:-)