文章目录
- 1.命令简介
- 2.命令格式
- 3.选项说明
- 4.返回值
- 5.常用示例
- 参考文献
1.命令简介
builtin 执行指定的 Shell 内置程序,传递参数,并返回其退出状态。
这在定义一个名称与 Shell 内置命令相同的函数时非常有用,可以在函数内通过 builtin 使用内置命令。
builtin 命令用以执行 Shell 内建命令,既然是内建命令,为什么还要以这种方式执行呢?
这个 Shell 命令的搜索顺序有关:
- 别名,使用alias创建的命令。
- 关键字,如if,for。
- 函数
- 内置命令,如cd,pwd等
- 外部命令,在PATH路径中寻找
因为 Shell 命令执行时函数优先于内建命令,如果自定义了一个与内建命令同名的函数,那么会执行这个函数而非真正的内建命令。
虽然使用 builtin 可以显示执行内部命令而非同名函数,但是在编写 Shell 函数时,还是建议尽可能避免同名,提高代码可读性。
2.命令格式
代码语言:javascript复制builtin shell-builtin [arguments]
3.选项说明
无。
4.返回值
如果给定的命令不是 Shell 内置命令,则返回状态为 false。
其他情况返回内置命令的退出状态。
5.常用示例
(1)执行 Shell 内部命令。
代码语言:javascript复制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 有哪些类型。
代码语言:javascript复制type -a echo
echo is a shell builtin
echo is /usr/bin/echo
然后使用 builtin 执行内建命令 echo。
代码语言:javascript复制builtin echo "hello world"
hello world
(3)执行 Shell 内建命令,而不是与之同名的函数。
以 umask 命令为例。
代码语言:javascript复制umask
0002
function umask() { echo "This is umask function"; }
umask
This is umask function
要想执行内置命令 umask,可以使用 builtin。
代码语言:javascript复制builtin umask
0002