Linux 命令(251)—— builtin 命令(builtin)

Posted 恋喵大鲤鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 命令(251)—— builtin 命令(builtin)相关的知识,希望对你有一定的参考价值。

文章目录

1.命令简介

builtin 执行指定的 Shell 内置程序,传递参数,并返回其退出状态。

这在定义一个名称与 Shell 内置命令相同的函数时非常有用,可以在函数内通过 builtin 使用内置命令。

builtin 命令用以执行 Shell 内建命令,既然是内建命令,为什么还要以这种方式执行呢?

这个 Shell 命令的搜索顺序有关:

  1. 别名,使用alias创建的命令。
  2. 关键字,如if,for。
  3. 函数
  4. 内置命令,如cd,pwd等
  5. 外部命令,在PATH路径中寻找

因为 Shell 命令执行时函数优先于内建命令,如果自定义了一个与内建命令同名的函数,那么会执行这个函数而非真正的内建命令。

虽然使用 builtin 可以显示执行内部命令而非同名函数,但是在编写 Shell 函数时,还是建议尽可能避免同名,提高代码可读性。

2.命令格式

builtin shell-builtin [arguments]

3.选项说明

无。

4.返回值

如果给定的命令不是 Shell 内置命令,则返回状态为 false。

其他情况返回内置命令的退出状态。

5.常用示例

(1)执行 Shell 内部命令。

builtin alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

(2)执行内建命令 echo。

先使用 type 命令看下 echo 有哪些类型。

type -a echo
echo is a shell builtin
echo is /usr/bin/echo

然后使用 builtin 执行内建命令 echo。

builtin echo "hello world"
hello world

(3)执行 Shell 内建命令,而不是与之同名的函数。

以 umask 命令为例。

umask
0002

function umask()  echo "This is umask function"; 
umask
This is umask function

要想执行内置命令 umask,可以使用 builtin。

builtin umask
0002

参考文献

builtin(1) - Linux manual page - linux.org

以上是关于Linux 命令(251)—— builtin 命令(builtin)的主要内容,如果未能解决你的问题,请参考以下文章

2020-05-17 linux命令之builtin

Linux 命令(248)—— type 命令(builtin)

Linux 命令(248)—— type 命令(builtin)

Linux 命令(242)—— fc 命令(builtin)

Linux 命令(242)—— fc 命令(builtin)

Linux 命令(232)—— bind 命令(builtin)