内置的 echo 命令和 /bin/echo 有什么区别?

Arc*_*ana 7 shell bash executable echo shell-builtin

我正在玩type和which命令,我发现了一些奇怪的东西。

type或者返回的路径或者说,一个命令是一个bash内置的。 which要么返回内置插件,如路径或没有exit或type

奇怪的是,type echo说 echo 是我预期的内置。

但是which echo将 /bin/echo 作为 echo 可执行文件的路径。对于任何其他内置命令,这似乎不会发生。

我想知道两者之间的区别是什么,Bash 选择在脚本和命令行中执行哪一个,以及这两个回声背后的故事是什么。

我的系统是 Ubuntu Desktop 12.04

mic*_*has 6

有一个 builtinecho和一个 command echo。使用type -a echo见到他们。

因为type它本身是一个 shell 内置函数,所以它能够知道其他内置函数。

并且which只是一个通常的命令。因此,它不知道您使用的是哪个 shell,而只会告诉您有关磁盘上的命令。

通常type是正确的命令,可以告诉您如果在 shell 中键入某个单词会发生什么。