/bin/sh 与 /bin/bash 的区别

/bin/sh/bin/bash 的区别,用 : 截取字符串不是POSIX 标准的。

区别

  1. sh 一般设成 bash 的软链 (symlink)

    [plain] view plain copy print?

    1. ls -l /bin/sh
    2. lrwxrwxrwx 1 root root 4 Sep 14 04:45 /bin/sh -> dash
  2. 在一般的 linux 系统当中(例外如 FreeBSD,OpenBSD 等),使用 sh 调用执行脚本相当于打开了bashPOSIX 标准模式
  3. 也就是说 /bin/sh 相当于 /bin/bash --posix

所以,它们之间的各种差异都是来自 POSIX 标准模式bash 的差异,比如 用 : 截取字符串,不能用 let , 遇错中断 等等,在使用时需要注意。

参考

    1. [Difference between sh and bash] http://stackoverflow.com/questions/5725296/difference-between-sh-and-bash
    2. [/bin/bash和/bin/sh的区别] http://www.cppblog.com/erran/archive/2012/05/24/176038.aspx
    3. [#!/bin/sh與#!/bin/bash的區別] http://fanli7.net/a/bianchengyuyan/_NET/20130916/424894.html
时间: 2024-11-07 20:13:09

/bin/sh 与 /bin/bash 的区别的相关文章

Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径. 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本. 比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等. #!/bin/bash同理. 二.区别 GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again

[shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

一直以为在shell脚本中#都是代表着注释功能,同样在脚本开始的#!/bin/sh也只是告诉用户这是一个shell脚本,而最近顺手查了下,才发现不是这个意思,分享下面的文章. 转自:http://www.cnblogs.com/EasonJim/p/6850319.html 一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径. $ cat /etc/shells可以查看系统支持的shell格式 其实第一句的#!是对脚

#!/bin/sh与#!/bin/bash的区别

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 的扩展,简称 Bas

bin/bash 和 /bin/sh 的区别

今天在用ssh Secure shell 连接虚拟机中的Ubuntu编写程序时,想比对一下两个源代码有什么差别,但是在一个ssh 客户端下不断的切换很是费劲.于是想着在主机中再添加一个用户.我原本用ssh Secure shell 登陆用的是root用户.于是想着添加一个sshConnect用户.于是在服务器的终端下通过使用 useradd命令和passwd命令添加了一个sshConnect用户,查看/etc/passwd 文件中的最后一行有sshConnect用户的数据. 但是当我通过ssh

-bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录

昨天在windows下用写字板写了个shell脚本,使用winscp上传到linux上运行的时候发现运行不了,提示-bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录,经过查找资料发现原因如下: 1.dos格式的文本文件要转换为unix格式的文本文件,在linux上操作如下:#unix2dos job.sh 2.或者vi job.sh set ff=unix wq! 保存退出后就可以运行.

sh和bash的区别

在鸟哥的私房菜的一书中,介绍了UNIX的版本以及众多的SHELL版本. 早在UNIX年代,发展者众多,所以由于shell依据发展者的不同就有许多版本,比如sh,C SHell,K SHell,还有TCSH等,每一种Shell都各有特点.当然也有我们的bash,bash这个shell是Bourne Shell的增强版本,也是基于GNU的架构下发展出来的. sh和bash的区别 因为bash是sh的增强版本,在我们平常实地操作的时候如果sh这个命令不灵了我们应当使用bash. 举个例子来说如果我们使

Linux SHELL中sh和bash的区别

什么是SHELL? shell的中文意思就是贝壳,其实比较类似于我们内核的壳.简而言之就是只要能够操作应用程序的接口都能够称为SHELL.狭义的shell指的是命令行方面的软件,广义的SHELL则包括图形界面. SHELL的版本 在鸟哥的私房菜的一书中,介绍了UNIX的版本以及众多的SHELL版本. 早在UNIX年代,发展者众多,所以由于shell依据发展者的不同就有许多版本,比如sh,C SHell,K SHell,还有TCSH等,每一种Shell都各有特点.当然也有我们的bash,bash这

一次事故再次了解linux的/bin /sbin /usr/bin /usr/sbin的区别

一:事故过程 在公司一台准生产环境(还好是准生产)由于公司一个服务日志级别没有调整为ERROR,导致大量的日志记录到/root 目录下(注意/root 是在/分区下是单独分区且不是很大,切记服务的日志级别不能直接打到/root 目录下,程序服务发布到分区比较大按照linux文件组织结构/var 这类可变目录下.) 直接打满/目录容量.重启了服务器,发现服务器只挂载了/目录. 二:问题解决 根据日志提示找到问题原因,通过df ,du命令找到文件,删除日志,重启解决.这些解决方法不是重点,重点是为什

坑爹的ubuntu /bin/sh

写了一个停止mongodb的脚本,代码片段如下: 1 #!/bin/bash 2 3 # stop mongo 4 echo "stop mongodb..." 5 MONGO_PID=`ps -ef | grep mongod | grep -v grep | awk '{print $2}'` 6 if [[ a${MONGO_PID} == a'' ]] 7 then 8 echo "mongodb is not running..." 9 else 10 k