shell用法总结9

141 阅读2分钟

引言

  • 该系列为个人经常需要将项目代码工程化,所以需要用到shell脚本,前段时间的每日一题沸点活动虽然写了不少,但是因为要满足活动要求,所以很多函数等语法无法介绍完全,该文将介绍一个函数具体详细一些的用法

正文 关于shell中的bash执行与sh执行的区别(上)

个人翻阅资料解释如下

  • 首先是shell和shell脚本的区别

    Shell 中文意思贝壳,寓意类似内核的壳。Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell是使用 C 语言编写的程序,其既是一种命令语言,又是一种程序设计语言。

    Shell 脚本(shell script)是一种使用 shell 编写的脚本程序。常说的shell通常都是指 shell 脚本,所以通常说的shell编程都是指 用shell 脚本编程,不是指开发 shell 自身。

  • 其次是shell脚本的执行所使用的"关键字"

    • sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写。
    • bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。
    • bash的主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接,个人理解也就是对sh的升级版本
    • dash (Debian Almquist shell)一种 Unix shell。它比 Bash 小,只需要较少的磁盘空间,但是它的对话性功能也较少。它由 NetBSD版本的Almquist shell (ash)发展而来,于1997年由赫伯特·许(Herbert Xu)移植到Linux上,于2002年改名为 dash。目前个人还未使用到其使用场景或者是否也被bash所顶替故不做详解。

关于shell脚本开头的#!含义

  • 一般shell文件开头都会有如下标记
#!/bin/bash
 
#!/bin/sh
  • #!是一个特殊标记,说明这是一个可执行的脚本。除了第一行,其他以#开头的都不再生效,为注释。
  • #!后面是脚本的解释器程序路径。这个程序可以是shell,程序语言或者其他通用程序,常用的是bash、sh。(有时候比如声明utf-8格式也会写在头部前几行)

结尾

  • 关于如何判断系统可使用的shell类型,POSIX标准是啥等问题放在下篇介绍