52. 操作内置命令


builtin命令用于显式调用 bash 内置命令。 假设您要在pwd输出前面添加 "===>"。 您可以创建一个名为 mypwd 的函数并将其添加到.bash_profile 中实现这一点。

$ vi ~/.bash_profile
function mypwd () {
    echo -n "===>"
    pwd
}

$ source ~/.bash_profile
$ mypwd
===>/home/ramesh

现在,让我们假设您想要覆盖默认pwd,并在执行pwd时调用自定义函数。 当然,您可以将.bash_profile 中的 mypwd 函数重命名为 pwd,但这种方法存在问题。 如果将自定义的 mypwd 函数重命名为 pwd,那么当您执行pwd命令时,它将进入无限循环,因为它正在调用自身。 它将永远保持打印 "===>"

$ vi ~/.bash_profile
function pwd () {
    echo -n "===>"
    pwd
}

因此,当您从与内置函数同名的自定义函数引用 bash 内置函数时,您应该使用builtin命令显式调用原始 bash 内置函数。 这是一个演示builtin命令使用的示例。

$ vi ~/.bash_profile
function pwd () {
    echo -n "===>"
    builtin pwd
}
$ source ~/.bash_profile
$ pwd
===>/home/ramesh

您可以使用enable启用或禁用 bash 内置命令。

默认情况下,所有内置函数均已启用。 例如,当您输入别名时,它将执行alias内置命令并显示输出。

要禁用内置的 bash 别名,请使用带有-n选项的启用。 一旦禁用内置命令,当您尝试执行它时,bash 将显示 "command not found",如下所示。

$ vi ~/.bash_profile
$ alias
$ enable -n alias
$ alias
-bash: alias: command not found

要再次启用内置别名,请使用不带-n选项的enable

$ enable alias
$ alias

注意:要查看所有启用的 shell 内置命令,请执行enable -p