据我所知,进程无法修改其父进程的环境。然而,当我运行mc
(GNU 的 Midnight Commander,一个基于诅咒的文件管理器)然后退出它时,我最终得到另一个$PWD
:
[localhost ~]$ echo $PWD
/home/pedro
[localhost ~]$ mc
removed `/tmp/mc-pedro/mc.pwd.5616'
[localhost pedro]$ echo $PWD
/nfs/home/pedro
我知道它并没有真正“改变”,因为/home
是 的符号链接/nfs/home
,但无论如何,$PWD
它是一个字符串,现在它是一个不同的字符串。
这里发生了什么事?
答案1
由于该命令是脚本mc
的别名,因此在. /some/script
当前的环境(.
相当于source
在某些 shell 中)。
以这种方式执行的脚本很可能会更改调用 shell 的环境,因为它是在同一环境中执行的。