Shell十三问更新总结版

简介

ChinaUnix 论坛 Shell 版名为網中人的前辈于 2004 年发布的精华贴,最近回炉这块内容,觉得很多东西讲的实在透彻,非常感谢前辈網中人,同时我个人也对这个系列做了一些总结和备注,写于下面章节,虽然这篇文件写于2004年,但是Shell这个东西变化很少,这个系列希望能够帮助到大家提供给大家,有心学习的同学不要读一遍练习一遍就算完了,第一遍和第二遍和第十遍读这个系列,感受绝对不一样,疏漏处请见谅。

網中人原贴:http://bbs.chinaunix.net/thread-218853-1-1.html

什么叫做 Shell?-- Shell十三问<第一问>

在介绍 shell 是什么东西之前,不妨让我们重新检视使用者与计算机系统的关系:我们知道计算机的运作不能离开硬件,但使用者却无法直接对硬件作驱动,硬件的驱动只能透过一个称为"操作系统(Operating System)"的软件来控管。

事实上,我们每天所谈的 linux ,严格来说只是一个操作系统,我们称之为"核心(kernel)"。然而,从使用者的角度来说,使用者也没办法直接操作 kernel ,而是透过 kernel 的"外壳"程序,也就是所谓的 shell ,来与kernel 沟通。这也正是 kernel 跟 shell 的形像命名关系。

从技术角度来说,shell 是一个使用者与系统的互动界面(interface),主要是让使用者透过命令行(command line)来使用系统以完成工作。

因此,shell 的最简单的定义就是---命令解译器(Command Interpreter)

  • 将使用者的命令翻译给核心处理,
  • 同时,将核心处理结果翻译给使用者。

每次当我们完成系统登入(login),我们就取得一个互动模式的 shell ,也称为 login shell 或primary shell。若从进程(process)角度来说,我们在 shell 所下达的命令,均是 shell 所产生的子进程。这现像,我们暂可称之为 fork进程 。

如果是执行脚本(shell script)的话,脚本中的命令则是由另外一个非互动模式的子 shell (sub shell)来执行的。也就是 primary shell 产生 sub shell 的进程,sub shell 再产生 script 中所有命令的进程。

这里,我们必须知道:kernel 与 shell 是不同的两套软件,而且都是可以被替换的:

  • 不同的操作系统使用不同的 kernel
  • 在同一个 kernel 之上,也可使用不同的 shell 。在 linux 的预设系统中,通常都可以找到好几种不同的 shell ,且通常会被列于如下档案里:/etc/shells 不同的 shell 有着不同的功能,且也彼此各异、或说"大同小异"。
常见的 shell 主要分为两大主流:
sh:
burne shell (sh)
burne again shell (bash)
---
csh:
c shell (csh)
tc shell (tcsh)
korn shell (ksh)

大部份的 Linux 系统的预设 shell 都是 bash ,其原因大致如下两点:

  • 自由软件
  • 功能强大

bash 是 gnu project (GNU项目)最成功的产品之一,自推出以来深受广大 Unix/linux 用户喜爱,且也逐渐成为不少组织的系统标准。

Shell十三问更新总结版 -- 什么叫做 Shell?-- Shell十三问<第一问>的更多相关文章

  1. Shell编程入门(第二版)(上)

    简单的示例Shell程序 示例1. #!/bin/bash #This is to show what a shell script looks like echo "Our first e ...

  2. Win10 PC一周年更新正式版14393.447 32位/64位更新补丁KB3200970下载 Flash补丁Kb3202790下载

    微软在今天凌晨推送了Win10 PC一周年更新正式版14393.447,本次更新补丁代号为KB3200970,面向Win10一周年更新正式版的PC用户. 更新日志 • 提升了多媒体音频.远程桌面以及I ...

  3. Windows 10一周年更新正式版官方ISO镜像(1607)

    微软已经开始推送Win10一周年更新正式版系统,按照此前预告微软官方网站也同步推出了Win10一周年更新正式版ISO官方镜像下载,版本已经升级到最新的1607,也就是Win10 Build 1607, ...

  4. Windows 10 周年更新正式版下载 + win10 快捷键

    Windows 10 周年更新正式版  360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd)今后提到周年更新版.1607版或RS1版,都是 ...

  5. Linux Shell系列教程之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  6. Linux Shell系列教程之(十五) Shell函数简介

    本文是Linux Shell系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell系列教程 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高 ...

  7. Linux Shell系列教程之(十四) Shell Select教程

    本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...

  8. Linux Shell系列教程之(十二)Shell until循环

    本文是Linux Shell系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环和Lin ...

  9. 【Shell脚本学习3】什么时候使用Shell

    因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化.因此,Shell脚本只要“用心写”一次,即可应用到很多系统上.因此,之所以要使用Shell脚本是基于: 简单性:Shel ...

随机推荐

  1. CSS3 Grid Layout & <track-size> & <line-name>

    CSS3 Grid Layout & <track-size> & <line-name> grid container grid-template: < ...

  2. javascript IIFE in depth

    javascript IIFE in depth function type 函数表达式 x = function (){ console.log(x); } ƒ (){ console.log(x) ...

  3. perl 打印简单的help文档

    更多 PrintHelp.pm #!/usr/bin/perl package PrintHelp; require Exporter; use v5.26; use strict; use utf8 ...

  4. NGK公链全面服务旅游经济

    有数据显示,2019 年全球旅游总收入已达 6.5万亿美元, 占全球 GDP 的 7.3%,旅游业发展所创造的收益,于全球经济的重要性,不言而喻. 在旅游产业蓬勃发展的同时,中心化运营模式下却仍存在痛 ...

  5. BGV暴涨千倍,未来或将超越YFI领跑DeFi全场!

    毫无疑问,YFI在2020年上半年以一己之力掀翻了DeFi市场的热潮.迄今为止,YFI的新鲜资讯从不缺席,最近也是频频登上各大知名媒体热搜.其币价远远超过比特币价格,也让资本市场注意到DeFi市场原来 ...

  6. 阿里面试这样问:redis 为什么把简单的字符串设计成 SDS?

    2021开工第一天,就有小伙伴私信我,还给我分享了一道他面阿里的redis题(这家伙绝比已经拿到年终奖了),我看了以后觉得挺有意思,题目很简单,是那种典型的似懂非懂,常常容易被大家忽略的问题.这里整理 ...

  7. 【DB宝19】在Docker中使用MySQL高可用之MHA

    目录 一.MHA简介和架构 1.1 MHA简介 1.2 MHA工具包的组成 1.3 MHA架构 二.准备MHA环境 2.1 下载MHA镜像 2.2 编辑yml文件,创建MHA相关容器 2.3 安装do ...

  8. JS语法-ES6

    1.介绍 ECMAScript 6简称ES6,是JavaScript语言的下一代标准. 2.常用属性及方法 2.1常量与变量的定义 在JavaScript中,我们一般使用var来定义变量,实际上它是有 ...

  9. yum安装MySQL8 - Centos8

    官方地址:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html 参考博客地址:https://www.jia ...

  10. java拼接JSON串

    String str = "{\"route\":\"onGift\",\"time\":\"\",\&quo ...