我知道内置命令是什么,但builtin
它本身有什么用呢?执行时which ls
会显示/bin/ls
,但执行时which builtin
不会返回任何内容。
man builtin
只是给了我一个内置命令列表,其中之一是builtin
。手册页的其余部分解释了什么是内置命令,但没有解释什么builtin
是内置命令。
builtin --help
告诉我builtin: usage: builtin [shell-builtin [arg ...]]
但它做了什么。
它是 bash 的一部分吗,而其他内置命令不是吗?
答案1
该builtin
命令确保您运行该命令的 shell 内置版本,而不是运行具有相同名称的另一个命令。
例如,假设您定义了一个名为 shell 函数,cd
每次更改目录时都会打印一些额外的状态。但是您搞砸了它,现在您无法正确更改目录。所以现在您可以键入builtin cd ~
以成功 cd 返回您的主目录,而无需运行损坏的 shell 函数。
顺便说一句,我的 bash 手册页副本中有一个名为“SHELL BUILTIN COMMANDS”的部分,它定义了builtin
该部分中命令的含义(如下所示)。
内置 shell-builtin [参数] 执行指定的 shell 内建命令,向其传递参数,并且 返回其退出状态。这在定义函数时很有用 其名称与 shell 内置命令相同,保留 函数中内置命令的功能。cd 内置命令是 通常以这种方式重新定义。 如果 shell-builtin 不是 shell 内置的,则返回状态为 false 命令。