关于bash和dash

来源:互联网 发布:scival数据库 编辑:程序博客网 时间:2024/04/23 15:53

什么是shell?其实一般用户通过shell来和Linux的内核通信,以让内核达到我们所想要达到的工作。也就是说,只要能够操作应用程序的接口都能被成为shell,狭义的shell指的是命令行方面的软件,例如bash。广义的shell则包括图形界面的软件(因为图形界面其实也能够操纵各种应用程序来调用内核工作)。


shell有多种,有Bourne SHell(sh),C SHell等,现绝大部分Linux发行版本使用的shell为:Bourne Again SHell,简称bash,这个shell是Bourne SHell的增强版本,是基于GNU的架构发展出来的。

dash是作为Debian Linux发行版的一部分开发的,主要出现在Ubuntu Linux发行版中。它是Bourne shell的精简版,支持的功能不像bash shell支持的那样多。


平时在 .sh文件中所看到的 /bin/sh 在大多Linux系统指的是一个符号链接,并不是说调用sh( /bin/sh 已经被 /bin/bash 所替代),如果在非Ubuntu的Linux系统中,该符号链接一般指向 /bin/bash,而在Debian Ubuntu中,该链接已经被指向了dash,也就是指向了 /bin/dash,由于dash执行效率更高,所以在Ubuntu才取代了bash,但由于dash是sh的精简,支持功能功能不够多,所以这可能会给脚本编程带来一些问题。

更多了解可以点击:https://wiki.ubuntu.com/DashAsBinSh


如果想更改Ubuntu默认的shell,可以使用

$ sudo dpkg-reconfigure dash

如果是一个开发人员,在Ubuntu想避免该问题,在.sh文件中,可以将 #! /bin/sh修改为 #! /bin/bash



0 0
原创粉丝点击