Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh), 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UNIX 上都可以使用, 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种shell。Linux 操作系统缺省的 shell 是Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,与 Bourne shell 完全向后兼容,并且在Bourne shell 的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多 C shell 和 Korn shell 中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。

GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell 比 Bash Shell 小的多,符合POSIX标准。

Ubuntu继承了Debian,所以从Ubuntu 6.10开始默认是Dash Shell。

  1. luotaijia@ubuntu:~$ ls -l /bin/sh /bin/bash

  2. -rwxr-xr-x 1 root root 801808 2010-08-11 03:58 /bin/bash

  3. lrwxrwxrwx 1 root root 4 2012-11-28 08:06 /bin/sh -> dash

应该说, /bin/sh 与 /bin/bash 虽然大体上没什么区别, 但仍存在不同的标准. 标记为 “#!/bin/sh” 的脚本不应使用任何 POSIX 没有规定的特性 (如 let 等命令, 但 “#!/bin/bash” 可以). Debian 曾经采用 /bin/bash 更改 /bin/dash,目的使用更少的磁盘空间、提供较少的功能、获取更快的速度。但是后来经过 shell 脚本测试存在运行问题。因为原先在 bash shell 下可以运行的 shell script (shell 脚本),在 /bin/sh 下还是会出现一些意想不到的问题,不是100%的兼用。

  1. 1 a=12345

  2. 2

  3. 3 let "a += 1"

  4. 4 echo "a = $a"

  5. 5

  6. 6 b=${a/23/BB}

  7. 7 echo "b = $b"

  1. luotaijia@ubuntu:~/文档/shell学习练习$ /bin/sh 3.2..1.sh

  2. 3.2..1.sh: 3: let: not found

  3. a = 12345

  4. 3.2..1.sh: 6: Bad substitution

  5. luotaijia@ubuntu:~/文档/shell学习练习$ /bin/bash 3.2..1.sh

  6. a = 12346

  7. b = 1BB46

  8. luotaijia@ubuntu:~/文档/shell学习练习$

特别说明:尊重作者的劳动成果,转载请注明出处哦~~~http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt189

linux bash 和 sh的区别相关推荐

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

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

  2. linux中./和sh的区别

    sh是一个shell.运行sh a.sh,表示我使用sh来解释这个脚本:如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统默认的shell(大多数linu ...

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

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

  4. linux -bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

    有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为脚本文件在windows下编辑过.在windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编 ...

  5. linux的bash与sh的区别

    转自:https://zhidao.baidu.com/question/305415121.html https://zhidao.baidu.com/question/176780008.html ...

  6. linux bash sh,linux bash shell.sh编程实例

    1.输出 #!/bin/bash echo "Please type your number:" read a for ((i=1;i<=a;i++)) do for ((p ...

  7. Linux下sh/bash/source/.命令的区别(转)

    一..sh文件介绍 .sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件. 二.点命令(.) .命令和source是同一个命令,可以理解为sour ...

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

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

  9. linux里source、. 、sh、bash、./有什么区别

    转载:https://www.cnblogs.com/pcat/p/5467188.html 1.source a.sh source可以简写为".",即. a.sh  注意中间有 ...

最新文章

  1. 玩转Windows 7
  2. UA MATH571A QE练习 R语言 单因子试验的回归分析
  3. 重温强化学习之OpenAI经典场景
  4. 集群调度框架的架构演进之路
  5. Matlab实用程序--图形应用-条形图形
  6. django项目日志
  7. Oracle如何根据SQL_TEXT生成SQL_ID
  8. cad中填充的剖面线不能被修剪_在模具行业中CAD二维制图的相关绘图规范
  9. could not find or load the Qt platform plugin xcb
  10. 爬虫之代理和cookie的处理
  11. 扫描仪上显示服务器连接错误代码,扫描仪 常见问题解决方法
  12. zabbix自定义监控之声音报警、用户和组权限
  13. 解决一例Fedora 31安装NVIDIA官方驱动程序无法使用DKMS注册的问题
  14. n维单位向量的生成公式
  15. 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理
  16. 微信小程序做图片压缩
  17. 目标检测比赛提高mAP的方法
  18. BFC、IFC、GFC、FFC
  19. Android手机安装Ubuntu系统作为服务器
  20. 函数式编程#3纯函数的概念

热门文章

  1. springboot start
  2. VS2015使用小技巧
  3. 1.3. kermit
  4. BZOJ 2733 线段树的合并 并查集
  5. UML用例图总结(转)
  6. [导入]Dreamweaver插入Flash参数
  7. 滴眼液的ph值与胶原纤维的粘结性(还没写完)
  8. This will have no impact if delete.topic.enable is not set to true以及删除kafka中的topic
  9. kaggle notebook中免密码进行push
  10. 多进程减少多个文件的内存占用