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

Shell 脚本(shell script)是一种为 shell 编写的脚本程序。常说的shell通常都是指 shell 脚本,但shell和shell script是两个不同的概念。通常说“shell编程”都是指 shell 脚本编程,不是指开发 shell 自身。

sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。

bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。

dash (Debian Almquist shell)一种 Unix shell。它比 Bash 小,只需要较少的磁盘空间,但是它的对话性功能也较少。它由 NetBSD版本的Almquist shell (ash)发展而来,于1997年由赫伯特·许(Herbert Xu)移植到Linux上,于2002年改名为 dash。

含义:

#!是一个特殊标记,说明这是一个可执行的脚本。除了第一行,其他以#开头的都不再生效,为注释。

#!后面是脚本的解释器程序路径。这个程序可以是shell,程序语言或者其他通用程序,常用的是bash、sh。

#!/bin/bash#!/bin/sh

查看:

cat /etc/shells    查看系统可使用的shell类型cat /etc/passwd    查看当前默认设置,一般在第一行:
root:x:0:0:root:/root:/bin/bashll /bin/sh    查看当前sh状态
lrwxrwxrwx 1 root root 4 3月  31  2018 /bin/sh -> dash*

区别:

sh 遵循POSIX规范:“当某行代码出错时,不继续往下解释”。bash 就算出错,也会继续向下执行。

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX )。POSIX标准意在期望获得源代码级别的软件可移植性。换句话说,为一个POSIX兼容的操作系统编写的程序,应该可以在任何其它的POSIX操作系统上编译执行。

sh 脚本:#!/bin/sh
source err
echo "test sh"结果为:
testsh.sh: 2: testsh.sh: source: not found
bash 脚本:#!/bin/bash
source err
echo "test sh"结果为:
testsh.sh: 2: testsh.sh: source: not found
test sh

sh 跟bash的区别,实际上是bash有没开启POSIX模式的区别。

简单说,sh是bash的一种特殊的模式,sh就是开启了POSIX标准的bash, /bin/sh 相当于 /bin/bash --posix。

在Linux系统上/bin/sh往往是指向/bin/bash的符号链接

ln -s /bin/bash /bin/sh

Shell bash和sh区别相关推荐

  1. 【Linux中shell命令】.sh文件种种操作

    文章目录 Shell基础 Shell本身 Shell脚本 第一个Shell脚本 运行Shell脚本有三种方式 Shell bash和sh区别 .sh文件与.bash文件 Shell内置变量命令 eva ...

  2. Linux ubuntu终端sh、bash、shell的联系与区别

    终端是一个在窗口中绘制文本的程序,它会在屏幕上显示输出,也能让你通过键盘输入内容.准确讲,应该被称为「终端模拟器」,是对早年老式终端机的一种模拟程序.终端本身并不知道如何处理你的输入内容,它只是把你输 ...

  3. shell中source、sh、bash、./的区别

    一.sh和bash的区别 sh和bash基本是一样,在我的linux环境查看,它俩是一样的: [root@unis0612p02-165 run]# ls -al `which sh` lrwxrwx ...

  4. linux基础:shell中的sh与bash区别与常用命令

    目录 一,什么是sh和bash? 二,shell的基本用法 2.1,变量 2.2,算术运算 2.3,使用 bash 计算器在shell脚本中进行浮点运算 2.4,shell中的条件判断命令test和[ ...

  5. linux shell中./a.sh , sh a.sh , source a.sh, . ./a.sh的区别

    在linux shell中, 执行shell script的方式有多种, 有什么区别呢? 现在用一个简单例子再来说下. a.sh的内容是: #! /bin/bash echo hello world ...

  6. 深入了解bash与sh的区别

    在我们所使用的系统当中,使用sh调用执行脚本,相当于打开了bash的POSIX标准模式 (等效于bash的 --posix 参数) 一般的,sh是bash的"子集" (不是子集的部 ...

  7. bash 和 sh 的一点儿区别

    PS:不明之处,请君留言,以期共同进步! 1. 发现区别 同样的 shell 脚本,使用 sh xxx.sh 和 bash xxx.sh 调用执行时结果不同,使用 sh 时会输出许多匪夷所思的结果,而 ...

  8. 执行sh脚本提示“[[: not found”解决方案,bash和sh的区别

    背景 不想听我罗嗦,可以直接跳转到最后. 笔记本买回来自带windows10,然后由于好奇心重,又给它折腾装上了ubuntu(本来是想支持国产deepin,奈何问题太多).万恶之源开始,ubuntu很 ...

  9. Linux + Shell bash / sh / ksh / csh / tcsh

    Redhat Gnome Terminal 快捷键 http://huangchao200701.javaeye.com/blog/263002 常用 win+n切换背景颜色风格 alt+tab=不用 ...

最新文章

  1. 探索JAVA并发 - 并发容器全家福!
  2. 干货! AI 推断解决方案栈 Vitis AI 全流程独家解析
  3. 深度包检测 DPI 介绍
  4. python开发web运维工具_【实战小项目】python开发自动化运维工具--批量操作主机...
  5. dnsmasq详解手册
  6. halcon区域腐蚀膨胀算子_超越halcon速度的二值图像的腐蚀和膨胀,实现目前最快的半径相关类算法(附核心源码)。...
  7. 递归1:二叉搜索树的范围和
  8. CANE:上下文相关动态图网络表示
  9. 倒计时 4 天!年度开发者盛会 Unite Shanghai 2019 全日程揭晓(附表)
  10. linux修改web密码忘记,Ubuntu 直接修改IPMIweb登录密码
  11. open cv+C++错误及经验总结(十三)
  12. BP算法的matlab代码学习
  13. Java语法总结 - 方法
  14. JS 获取当前页面url(不含参数)
  15. 毕业实习大作业(Android-Spring Boot-MySQL 前后端分离项目 快速上手实例)
  16. python 处理snp的vcf文件,统计snp在基因的intron、exon还是上游、下游还是不在基因及基因附近
  17. python图片保存_Python中读取,显示,保存图片的方法
  18. bitwarden_rs 搭建自托管的密码服务器
  19. PC远程控制android思路,PC 远程控制 android手机的方法之一VNC
  20. https双向认证訪问管理后台,採用USBKEY进行系统訪问的身份鉴别,KEY的证书长度大于128位,使用USBKEY登录...

热门文章

  1. 信息系统项目管理师 - 项目范围管理
  2. 数据结构与算法第2章:链表
  3. 二、 剖析Netty的工作机制之Buffer、Channel、Selector分析
  4. 计算机网络——物理层(宽带接入技术)
  5. 球形/PH响应性的树枝状聚合物:树枝状聚酰胺PAMAM/His-PAMAM/DNA 聚酰胺偶联组氨酸/的制备流程
  6. Bison 的构成与使用
  7. ad Hoc打包测试
  8. mooc《工程流体力学》笔记
  9. 涅槃重生!字节大牛力荐大型分布式手册,凤凰架构让你浴火成神
  10. Postman学习_Sinno_Song_新浪博客