例如,bash 位于 /bin/bash 下,这意味着它是一个命令,每个命令都有三个 (0,1,2) 孔:标准输入、标准输出、标准错误。
这对于 shell 是否也是 100% 正确的,还是因为 shell 作为命令或进程的特殊含义而有什么不同?
它与任何其他程序相同。这允许您像其他程序一样重定向和管道 I/O。
echo "cat filename" | bash
Run Code Online (Sandbox Code Playgroud)
将在从管道读取其标准输入cat filename
时执行该命令bash
。
bash -c "echo foo" > filename
Run Code Online (Sandbox Code Playgroud)
将执行echo foo
命令,输出将被重定向到文件。
在 Unix 上,shell 没有什么“特别之处”。它只是一个普通程序,其主要目的是执行其他程序。