第5章 理解shell

作者: Hannahhao | 来源:发表于2020-02-24 22:25 被阅读0次

5.1 shell 的类型

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

  • 默认的交互shell(系统启动什么样的shell程序取决于个人的用户ID配置)
    在etc/passwd文件中,在用户ID记录的第7个字段中列出了默认的shell程序。 bash shell程序位于/bin目录内。
    /bin/bash*是一个可执行程序

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

  • 默认的系统shell:/bin/sh (用于那些需要在启动时使用的系统shell脚本)

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用法

  • 探索后台模式
    sleep命令:进程等待/睡眠的秒数
    末尾加字符&:将命令置入后台模式
    jobs命令:显示当前运行在后台模式中的所有用户的进程。

  • 将进程列表置于后台

  • 协程
    coproc命令:协程处理

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命令可以查看)。
  • 使用history命令(查看最近用过的命令列表)
    输入!!时,bash首先会显示出从shell的历史记录中换回的命令,然后执行该命令。
  • 命令别名 alias(运行为常用命令创建另一个名称,减少输入量)

5.4 小结

  • 默认的交互式shell和系统shell(/bin/bash和/bin/sh)
  • 子shell:bash生成,coproc也可以。
  • 外部命令和内建命令(外部命令会创建出一个包含全新环境的子进程)

相关文章

  • 第5章 理解shell

    [TOC] shell的类型 系统一般会默认安装多种shell程序:/bin/sh/bin/bash 大部分发行...

  • 第5章 理解shell

    5.1 shell 的类型 对bash shell脚本来说,有两种不同的shell: 默认的交互shell(系统启...

  • 理解shell

    GUI(Graphical User Interface 图形用户界面);CLI(command-line int...

  • Shell(3)shell理解

    默认shell 默认系统shell:存储查看位置在/bin/sh 默认交互shell:存储查看位置在/etc/pa...

  • 3.shell 基本特性之~ shell展开详解

    第 3 章目录: 3.1 shell 语法3.2 shell 命令3.3 shell 函数3.4 shell 参数...

  • 4. shell基本特性之~ 重定向

    第 3 章目录: 3.1 shell 语法3.2 shell 命令3.3 shell 函数3.4 shell 参数...

  • Shell编程-13-子Shell和Shell嵌套

    什么是子Shell     子Shell的概念其实是贯穿整个Shell的,如果想要更好的理解和写Shell脚本则必...

  • shells on Mac

    1、理解什么是Shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell ...

  • Shell脚本的简单介绍

    什么是Shell Shell应该是命令解释器,将Shell脚本解析成操作系统能理解的操作去执行。Shell脚本就是...

  • 三、理解shell

    前面两节学习了一些shell的基本命令,但是我们并不知道shell进程的具体,本节学习一下 1.shell类型 先...

网友评论

    本文标题:第5章 理解shell

    本文链接:https://www.haomeiwen.com/subject/bjbwqhtx.html