Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell管道中的内置命令_Shell_Pipe - Fatal编程技术网

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
。。。。这个过程(更确切地说,它的一个子进程:try
cd/home | pwd
)将把它的工作目录更改为
/home
,然后退出。父shell(您正在使用的shell)的工作目录将不会更改

zsh
中,管道中除最后一个命令外的所有命令都将在不同的进程中执行。所以在
zsh中

ls | sort | cd /home
将更改您的工作目录,但

cd /home | ls | sort 

。。。不会

cd
将目录作为参数读取,而不是在
stdin
上读取,除非将目录指定为
'-'
@HwanE运行
ls | sort | cd/home
时会发生什么?为什么?