0

我已经坚持了几个小时:

cd /dir1
(cd $HOME); pwd;

为什么pwd还是说/dir1没有去我的主目录?

4

1 回答 1

2

括号开始一个子shell:shell调用fork,括号内的命令在子进程中执行。父进程等待子进程退出,然后恢复执行。所以发生的事情是:

  • 的执行cd /dir1:shell 执行chdir("/dir1")
  • 括号的执行:shell调用fork,然后父进程等待子进程退出。
  • 执行cd $HOME:子shell执行chdir("/home/jurgen")
  • 子shell 已用完命令,因此退出。
  • 子外壳已退出,因此wait父外壳中的调用返回。
  • 执行pwd:shell 打印其当前目录,即/dir1.
于 2013-03-24T23:32:55.603 回答