这里的一个益智游戏:任何人都可以解释为什么当输出被重定向到一个管cd失败

E.g:

james@machine:~$ cd /tmp                          # fine, no problem
james@machine:~$ cd /tmp | grep 'foo'             # doesn't work
james@machine:~$ cd /tmp | tee -a output.log      # doesn't work
james@machine:~$ cd /tmp >out.log                 # does work

恪在OSX,Ubuntu和RHEL。

任何想法?

修改:看起来很奇怪的是,我管道cd的输出?其原因是,它从一个函数是任意的包装外壳命令与日志条目和处理的输出。

有帮助吗?

解决方案

在重定向输出,它产生一个子壳进程,子进程改变的目录,并退出。当你不重定向输出,因为它是一个内置的shell命令不会派生的任何新的进程。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top