“内置” bash 命令是如何定义的?

“内置” bash 命令是如何定义的?

我注意到像这样的命令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

许多内置命令之所以是内置的,是因为它们无法通过其他方式工作。 cdsource就是示例。

其他内置函数仅仅是为了提高效率而内置的。 test(又名[...])和echo只是例子。

要了解更多信息,请参阅SHELL BUILTIN COMMANDSman 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

相关内容