诗和远方

Shell的内建命令、外部命令、函数

linux

Shell识别三种基本命令:内建命令、外部命令、Shell函数


(1)内建(builtin)命令就是由Shell本身所执行的命令。

有些命令是由于其必要性才内建的,例如cd用来改变目录,read会将来自用户(和文件)的输入数据传给Shell外亮。

另一种内建命令的存在则是为了效率,其中最典型的就是test命令,编写脚本时经常会用到它。另外还有I/O命令,例如echo于printf


(2)外部命令就是由Shell副本(新的进程)所执行的命令,基本的过程如下:

a. 新建一个Shell副本进程

b. 在新的进程里,在PATH变量内所列出的目录中,寻找特定的命令【当命令名称包含有斜杠(/)符号时,将略过路径查找步骤】

c. 在新的进程里,以所找到的新程序取代执行中的Shell程序并执行

d. 程序完成后,最初的Shell会接着从终端读取下一条命令,和执行脚本里的下一条命令。


(3)Shell函数是功能健全的一系列程序代码,以Shell语言写成,它们可以像命令那样引用。


Shell下交互式命令执行:

用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。


使用type可以查看是否是内建命令。cd、alias、umask、exit等命令即是内建命令

凡是用which命令查不到程序文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令,应该man bash-builtins。

内建命令虽然不创建新的进程,但执行结束后也会有Exit Status,通常也用0表示成功非零表示失败,也可以用特殊变量$?读出。

Related
/var/log目录下的Linux日志文件功能2019年06月24日
索引节点inode2019年06月21日
Shell脚本实例2019年06月20日
GCC编译C程序2019年06月18日
Linux内核编译/内核数据结构/同步机制/信号量2019年06月14日
shell中的算术运算2019年06月14日
iptables2019年06月14日
7 个致命的 Linux 命令2019年06月14日

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Catalog
标签列表
最新
最热
常用网站
站点信息
  • 文章总数:1996
  • 页面总数:1
  • 分类总数:17
  • 标签总数:515
  • 评论总数:0
  • 浏览总数:519194
Archives
Copyright © 2017-2019 www.my889.com Some Rights Reserved.
推荐使用 Chrome 浏览器浏览本站
沪ICP备17052342号
Sitemap XML