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

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

我在摆弄typewhich命令时发现了一些奇怪的事情。

type要么返回路径,要么说明命令是内置的 Bash。 which对于内置命令,要么返回路径,要么不返回任何内容,例如exittype

奇怪的是,type echo正如我所料,echo 是内置的。

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

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

我的系统是Ubuntu Desktop 12.04

答案1

有一个内置函数echo和一个命令echo。用于type -a echo查看所有这些。

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

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

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

相关内容