我在摆弄type
和which
命令时发现了一些奇怪的事情。
type
要么返回路径,要么说明命令是内置的 Bash。
which
对于内置命令,要么返回路径,要么不返回任何内容,例如exit
或type
奇怪的是,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 中输入某个单词会发生什么。