1、builtin

在shell中,内建(builtin)命令builtin,格式如下:

builtin shell-builtin [arguments]

builtin命令用以执行shell的内建命令,既然是内建命令,为什么还要以这种方式执行呢?因为shell命令执行时首先从函数开始,如果自定义了一个与内建命令同名的函数,那么就执行这个函数而非真正的内建命令。

下面以shell内建命令umask为例说明:

$ umask
0002
$ umask() { echo "umask function"; }
$ umask
umask function
$ builtin umask
0002
$ unset -f umask
$ umask
0002

2、command

在shell中,内建(builtin)命令command,格式如下:

command [-pVv] command [arg ...]

command命令类似于builtin,也是为了避免调用同名的shell函数,命令包括shell内建命令和环境变量PATH中的命令。选项“-p”指定在默认的环境变量PATH中查找命令路径。选项“-v”和“-V”用于显示命令的描述,后者显示的信息更详细。

下面以命令ps(“/bin/ps”)为例说明:

$ psPID TTY          TIME CMD8726 pts/22   00:00:00 ps
10356 pts/22   00:00:00 bash
$ ps() { echo "function ps"; }
$ ps
function ps
$ command psPID TTY          TIME CMD9259 pts/22   00:00:00 ps
10356 pts/22   00:00:00 bash
$ unset -f ps
$ psPID TTY          TIME CMD9281 pts/22   00:00:00 ps
10356 pts/22   00:00:00 bash

3、caller

在shell中,内建(builtin)命令caller,格式如下:

caller [expr]

caller命令返回当前活动的子程序调用的上下文,即调用堆栈信息,包括shell函数和内建命令source执行的脚本。没有指定expr时,显示当前子程序调用的行号和源文件名。如果expr是一个非负整数,显示当前子程序调用的行号、子程序名和源文件名。caller命令打印出来的堆栈信息在调试程序时是很有帮助的,当前栈帧为0。如果shell没有子程序调用或者expr是一个无效的位置时,call命令返回false。

下面以例子说明caller命令的用法:

$ cat -n test.sh 1  #!/bin/bash2  3  foo()4  {5      echo "foo called"6      caller 7  }8  9  bar()10  {11      echo "bar called"12      caller 013  }14  15  test1()16  {17      echo "test1 called"18      caller19      caller 020      caller 121      caller 222  }23  24  test2()25  {26      echo "test2 called"27      test128  }29  30  test3()31  {32      echo "test3 called"33      test234  }35  36  foo37  bar38  test3
$ bash test.sh
foo called
36 test.sh
bar called
37 main test.sh
test3 called
test2 called
test1 called
27 test.sh
27 test2 test.sh
33 test3 test.sh
38 main test.sh

【Bash百宝箱】shell内建命令之builtin、command、caller相关推荐

  1. linux shell 内建命令,什么是Bash Shell的内建(build in)命令

    1.什么是build in命令: shell内建命令是指bash(或其它版本)工具集中的命令.一般都会有一个与之同名的系统命令,比如bash中的echo命令与/bin/echo是两个不同的命令,尽管他 ...

  2. Linux Shell 内建命令 : builtin 命令详解

    builtin命令用于执行指定的shell内部命令,并返回内部命令的返回值.builtin命令在使用时,将不能够再使用Linux中的外部命令.当系统中定义了与shell内部命令相同的函数时,使用bui ...

  3. 【Bash百宝箱】shell内建命令之declare、typeset、local

    1.declare(typeset) 在shell中,内建(builtin)命令declare与typeset用法相同,格式如下: declare [-aAfFgilnrtux] [-p] [name ...

  4. (转)cd命令为何要实现成shell内建命令

    2019独角兽企业重金招聘Python工程师标准>>> 如果不使用内建命令而是fork出一个子进程并且在子进程中执行的话,不会改变父环境的路径. 因为执行结束了又回到了父shell环 ...

  5. linux 冒号命令,Linux Shell 内建命令:冒号(:)

    在Linux系统中,冒号(:)常用来做路径的分隔符(PATH),数据字段的分隔符(/etc/passwd)等.其实,冒号(:)在Bash中也是一个内建命令,它啥也不做,是个空命令.只起到占一个位置的作 ...

  6. 【Bash百宝箱】shell内建命令之echo、printf

    原文地址:http://blog.csdn.net/iEearth/article/details/52640972 1.echo 在shell中,内建(builtin)命令echo,格式如下: ec ...

  7. shell内建命令--Linux

    exec命令()取代当前shell find ./ -name "*.txt" -exec ls -al {} \; find ./ -name "*.txt" ...

  8. Linux Shell 内建命令 : sh命令详解

    sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取.通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个 ...

  9. Shell内建命令之echo、local、logout

    echo echo [-neE] [arg -],输出arg,多个arg由空格分隔,以换行符结束.除非发生写错误,否则返回状态为0.-n选项,不输出最后换行符.-e选项,启用反斜杠转义.-E选项,禁用 ...

最新文章

  1. 使用 mkdocs 搭建个人 wiki 站点
  2. 如何用cmd命令控制mysql数据库
  3. 老李分享:系统可用性评估
  4. 【NOIP2013模拟】黑魔法师之门
  5. 基于matlab的图解粒度参数计算,基于MATLAB的图解粒度参数计算-热带地理.PDF
  6. 【最短路】【Floyed】医院设置(ssl 1614)
  7. “中序表达式”转换为“前序表达式”、“后序表达式”
  8. 彻底搞懂Gradle、Gradle Wrapper与Android Plugin for Gradle的区别和联系
  9. ASP.NET2.0(学习第一天)
  10. 常见英文缩写 (持续更新……)
  11. 数据库进行大数据量插入/更新操作
  12. kali 破解压缩包密码
  13. html好看目录样式,HTML_CSS使用详解,目录样式类型(List Style Type) 说 - phpStudy
  14. 计算机网络安全基础复习(第四版)袁津生主编(转载请注明出处---https://www.cnblogs.com/qingl)...
  15. 路由器组成及路由器发展概述
  16. UE4开发五:人物模型和摄像机
  17. 五款堪称神奇的手机APP 一定不要错过了
  18. Node.js进阶基础技能—Koa基本使用
  19. linux 系统启动服务setup设置
  20. Microsoft Edge浏览器使用时过滤网页广告弹窗等插件推荐---电脑初始维护

热门文章

  1. assoc在php中,在PHP中使用array_diff_assoc函数
  2. Random不出现重复数字
  3. X-Mind8破解版
  4. Podman使用详解
  5. 在KubeSphere中部署微服务(阡陌)+ DevOps
  6. Windows AD域功能介绍、Windows AD域方案介绍
  7. hadoop搭建伪分布式集群(centos7+hadoop-3.1.1)
  8. 汇编总结:无符号除法,有符号除法,取余,无符号乘法,有符号乘法指令
  9. 1688获得店铺详情数据教程
  10. 学历真的是衡量一个人的首要条件吗?