linux bash 和 sh的区别
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。
luotaijia@ubuntu:~$ ls -l /bin/sh /bin/bash
-rwxr-xr-x 1 root root 801808 2010-08-11 03:58 /bin/bash
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 a=12345
2
3 let "a += 1"
4 echo "a = $a"
5
6 b=${a/23/BB}
7 echo "b = $b"
luotaijia@ubuntu:~/文档/shell学习练习$ /bin/sh 3.2..1.sh
3.2..1.sh: 3: let: not found
a = 12345
3.2..1.sh: 6: Bad substitution
luotaijia@ubuntu:~/文档/shell学习练习$ /bin/bash 3.2..1.sh
a = 12346
b = 1BB46
luotaijia@ubuntu:~/文档/shell学习练习$
linux bash 和 sh的区别相关推荐
- 深入了解bash与sh的区别
在我们所使用的系统当中,使用sh调用执行脚本,相当于打开了bash的POSIX标准模式 (等效于bash的 --posix 参数) 一般的,sh是bash的"子集" (不是子集的部 ...
- linux中./和sh的区别
sh是一个shell.运行sh a.sh,表示我使用sh来解释这个脚本:如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统默认的shell(大多数linu ...
- 执行sh脚本提示“[[: not found”解决方案,bash和sh的区别
背景 不想听我罗嗦,可以直接跳转到最后. 笔记本买回来自带windows10,然后由于好奇心重,又给它折腾装上了ubuntu(本来是想支持国产deepin,奈何问题太多).万恶之源开始,ubuntu很 ...
- linux -bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为脚本文件在windows下编辑过.在windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编 ...
- linux的bash与sh的区别
转自:https://zhidao.baidu.com/question/305415121.html https://zhidao.baidu.com/question/176780008.html ...
- 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 ...
- Linux下sh/bash/source/.命令的区别(转)
一..sh文件介绍 .sh为Linux的脚本文件,我们可以通过.sh执行一些命令,可以理解为windows的.bat批处理文件. 二.点命令(.) .命令和source是同一个命令,可以理解为sour ...
- Linux ubuntu终端sh、bash、shell的联系与区别
终端是一个在窗口中绘制文本的程序,它会在屏幕上显示输出,也能让你通过键盘输入内容.准确讲,应该被称为「终端模拟器」,是对早年老式终端机的一种模拟程序.终端本身并不知道如何处理你的输入内容,它只是把你输 ...
- linux里source、. 、sh、bash、./有什么区别
转载:https://www.cnblogs.com/pcat/p/5467188.html 1.source a.sh source可以简写为".",即. a.sh 注意中间有 ...
最新文章
- 玩转Windows 7
- UA MATH571A QE练习 R语言 单因子试验的回归分析
- 重温强化学习之OpenAI经典场景
- 集群调度框架的架构演进之路
- Matlab实用程序--图形应用-条形图形
- django项目日志
- Oracle如何根据SQL_TEXT生成SQL_ID
- cad中填充的剖面线不能被修剪_在模具行业中CAD二维制图的相关绘图规范
- could not find or load the Qt platform plugin xcb
- 爬虫之代理和cookie的处理
- 扫描仪上显示服务器连接错误代码,扫描仪 常见问题解决方法
- zabbix自定义监控之声音报警、用户和组权限
- 解决一例Fedora 31安装NVIDIA官方驱动程序无法使用DKMS注册的问题
- n维单位向量的生成公式
- 分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理
- 微信小程序做图片压缩
- 目标检测比赛提高mAP的方法
- BFC、IFC、GFC、FFC
- Android手机安装Ubuntu系统作为服务器
- 函数式编程#3纯函数的概念