shell管道中的内置命令
跑步时shell管道中的内置命令,shell,pipe,Shell,Pipe,跑步时 ls | sort | cd /home 。。。我知道管道连接着整个过程 在Linux中,每个命令都在一个独立的进程中运行,我们知道它会将左侧的stdout传递给右侧的进程 但与我的预期相反,一切都没有进展。 应该将目录更改为/home,但什么也没有发生。为什么会这样?在bash中,管道中的命令是在不同的进程中执行的。如果你打字 ls | sort | cd /home 。。。。这个过程(更确切地说,它的一个子进程:trycd/home | pwd)将把它的工作目录更改为/home
ls | sort | cd /home
。。。我知道管道连接着整个过程
在Linux中,每个命令都在一个独立的进程中运行,我们知道它会将左侧的stdout传递给右侧的进程
但与我的预期相反,一切都没有进展。
应该将目录更改为/home,但什么也没有发生。为什么会这样?在
bash
中,管道中的命令是在不同的进程中执行的。如果你打字
ls | sort | cd /home
。。。。这个过程(更确切地说,它的一个子进程:trycd/home | pwd
)将把它的工作目录更改为/home
,然后退出。父shell(您正在使用的shell)的工作目录将不会更改
在zsh
中,管道中除最后一个命令外的所有命令都将在不同的进程中执行。所以在zsh中
ls | sort | cd /home
将更改您的工作目录,但
cd /home | ls | sort
。。。不会
cd
将目录作为参数读取,而不是在stdin
上读取,除非将目录指定为'-'
@HwanE运行ls | sort | cd/home
时会发生什么?为什么?