我注意到像这样的命令cd ..
实际上被转换为builtin cd ..
然后执行。但是如何builtin
定义?没有显示任何内容,which builtin
也不在等等中。它只是 bash 程序的一部分并且被以不同的方式处理吗?/bin
/usr/bin
答案1
内置命令只是 bash 的一部分。您可以使用 来查看某个命令是否是内置命令type
。例如:
$ type export cd source alias
export is a shell builtin
cd is a shell builtin
source is a shell builtin
alias is a shell builtin
许多内置命令之所以是内置的,是因为它们无法通过其他方式工作。 cd
和source
就是示例。
其他内置函数仅仅是为了提高效率而内置的。 test
(又名[...]
)和echo
只是例子。
要了解更多信息,请参阅SHELL BUILTIN COMMANDS
或man bash
在线bash 手册。要获取可用内置命令列表,请help
在命令提示符下运行。要获取有关特定内置命令的信息,例如test
,运行help test
。请注意,help test
将提供有关 bashtest
内置命令的信息,而相反,man test
可能会提供有关外部命令的帮助test
。
哪些命令既可执行又可内置
使用该-a
选项,type
将显示所有包含指定命令的位置。例如:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
当有内置命令可用时如何使用可执行文件
如果由于某些奇怪的原因,您想要使用特定的可执行文件而不是内置的 shell,那么您只需指定路径:
$ /bin/echo "This is not the builtin"
This is not the builtin
由于内置函数通常具有更多功能,因此这通常仅对兼容性测试有用。
当 shell 内置命令被函数或别名隐藏时如何执行它
如果有选择,shell 通常会选择执行内置命令。例外情况是用户定义了同名的别名或函数。如果要确保正在执行内置命令,请使用以下命令builtin
:
$ builtin echo 1 2 3
1 2 3