【问题标题】:Bad use of parentheses [closed]括号使用不当[关闭]
【发布时间】:2013-03-24 15:59:09
【问题描述】:

我已经坚持了好几个小时了:

cd /dir1
(cd $HOME); pwd;

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

【问题讨论】:

标签: unix parentheses pwd


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 2016-07-16
    • 2018-12-03
    • 2010-12-29
    • 2014-04-23
    • 1970-01-01
    相关资源
    最近更新 更多