【发布时间】:2013-03-24 15:59:09
【问题描述】:
我已经坚持了好几个小时了:
cd /dir1
(cd $HOME); pwd;
为什么pwd 还是说/dir1 而没有进入我的主目录?
【问题讨论】:
-
试试
(cd $HOME; pwd); pwd,你会看到子shell在/home/user,而当前shell还在/dir1。
标签: unix parentheses pwd
我已经坚持了好几个小时了:
cd /dir1
(cd $HOME); pwd;
为什么pwd 还是说/dir1 而没有进入我的主目录?
【问题讨论】:
(cd $HOME; pwd); pwd,你会看到子shell在/home/user,而当前shell还在/dir1。
标签: unix parentheses pwd
括号开始一个子shell:shell调用fork,括号内的命令在子进程中执行。父进程等待子进程退出,然后恢复执行。所以发生的事情是:
cd /dir1的执行:shell执行chdir("/dir1")。fork,然后父进程等待子进程退出。cd $HOME:子shell执行chdir("/home/jurgen")。wait 调用返回。pwd:shell 打印其当前目录,即/dir1。【讨论】: