如何解决shell 管道中的内置命令
跑步时
ls | sort | cd /home
...我知道管道连接进程。
在 Linux 中,每个命令都在一个独立的进程中运行,我们知道它会将左侧的 stdout 传递给右侧的进程。
但出乎我的意料,没有任何东西在运行。 目录更改为 /home 应该会发生,但没有任何反应。这是为什么?
解决方法
在 bash
中,管道中的命令在不同的进程中执行。如果你输入
ls | sort | cd /home
.... 这个进程(更准确地说,是它的一个子进程:try cd /home | pwd
)将把它的工作目录更改为 /home
然后退出。父shell(您正在工作的那个)的工作目录不会改变。
在 zsh
中,除了最后一个 管道中的所有命令都将在不同的进程中执行。所以在zsh
ls | sort | cd /home
会改变你的工作目录,但是
cd /home | ls | sort
...不会
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。