【发布时间】:2018-11-18 20:01:18
【问题描述】:
一些命令是内部内置的 Bash 命令,而另一些是外部的(其他程序)。我明白为什么需要内置某些命令。一些原因是:
- 如果一个命令需要改变shell进程的内部状态。
- 如果命令在 shell 中执行非常基本的操作。
- 如果一个命令经常被调用并且需要快速执行。外部命令是通过加载外部程序来执行的,因此速度较慢。
但是为什么有些命令既是内置的又是外置的,例如echo和test?我知道 echo 被大量使用,因此是内置的(原因 3)。但是为什么还要将它作为一个外部命令并在 /bin/echo 中有一个二进制文件呢? echo 的内置版本总是优先于外部版本,因此外部版本几乎不会被使用。那么,为什么还要有它的外部版本呢?
【问题讨论】:
-
还要考虑
bash不是唯一的外壳。在其历史的某个时刻bash可能已经决定在内部创建一个命令,例如原因 #3 - 但仍有其他 shell 调用该工具,因此它必须作为外部命令继续存在。