内置命令在 bash 中起什么作用?

内置命令在 bash 中起什么作用?

我知道内置命令是什么,但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
    命令。

相关内容