这是一个益智游戏:任何人都可以解释为什么cd
输出重定向到管道失败?
例如:
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命令和日志条目并处理输出的函数.
重定向输出时,它会生成子shell进程,更改子进程中的目录并退出.当您不重定向输出时,它不会产生任何新进程,因为它是一个内置的shell命令.