Linux命令行与shell脚本编程大全学习笔记

第5章 理解shell

2020-02-24  本文已影响0人  Hannahhao

5.1 shell 的类型

对bash shell脚本来说,有两种不同的shell:

CentOS发行版还有一些其他shell程序,包括tcsh(源自最初的C shell);ash shell的Debian版 dash。

Ubuntu发行版中,默认的系统shell(dash shell)和默认的交互shell(bash shell )并不相同。


输入命令/bin/dash:启动dash shell;exit来推出dash shell。

5.2 shell的父子类型

默认的交互shell:父shell
输入/bin/bash命令或其他等效的bash命令是,会创建一个新的shell程序,成为子shell
bash命令:生成子shell,并且shell可以套shell,exit退出shell。

输入bash, 生成子shell时看不到任何信息,命令ps -f 查看进程来看父子shell; ps --forest命令查看子shell间嵌套结构。

5.2.1 进程列表

在一行中指定要依次运行的一系列命令可以用命令列来实现:在命令之间加入分号 即可。
加入 ( ) 使得命令列表变成进程列表,生成了一个子shell来执行对应的命令。
想知道是否生成了子shell,借助命令echo $BASH_SUBSHELL,返回0,表明没有子shell,返回1或更大数字,表明存在子shell。

5.2.2 别处心裁的子shell用法

5.3 理解shell的内建命令

5.3.1 外部命令

外部命令:文件系统命令,存在于bash shell之外的程序,常位于/bin、/usr/bin、/sbin、/usr/sbin中。
举例:ps就是一个外部命令,可以用which和type命令找到它。
当外部命令执行时,会创建出一个子进程,这种操作成为衍生

5.3.2 内建命令

和shell编译成一体,不需要借助外部程序文件来运行。
cd和exit命令都内建于bash shell。

有些命令既有内建命令也有外部命令;实现略有不同(type -a命令可以查看)。

5.4 小结

上一篇 下一篇

猜你喜欢

热点阅读