Linux shell语言——dash和bash

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux shell语言——dash和bash相关的知识,希望对你有一定的参考价值。

参考技术A 自己写的一个while循环结构总是报错,纠结了一下午,各种查资料、改命令行,最后发现是ubuntu系统解释器的原因,脚本没有问题,换一下解释器就OK了。郁卒的要死……

什么是bash ?

Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。

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

Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。

就是这个倒霉的dash解释器使得我按照bash语法写的shell 脚本不能运行。

要知道自己的/bin/sh指向何种解释器,可以用 ls /bin/sh -al 命令查看:

        $ ls /bin/sh -al

        lrwxrwxrwx 1 root root 4 11月 16 15:33 /bin/sh -> bash

以上结果就表示当前系统用的是dash解释器。

切换到bash的方式其实挺简单的,关键是一直没找出这个原因……

修改默认的sh,可以采用命令 sudo dpkg-reconfigure dash

会出现一个图片状的配置菜单,选no就可以了

再次检查一下, ls /bin/sh -al 发现软链接指向/bin/bash

         lrwxrwxrwx 1 root root 4 11月 16 15:33 /bin/sh -> bash

参考资料: Ubuntu 的 bash和dash的区别_Linux教程_Linux公社-Linux系统门户网站

感谢度娘!!

注:dash 和 bash 语法上的主要的区别有:

Ubuntu切换默认shell为bash或者dash

bash和dash

从Ubuntu 6.10开始,默认使用dash(theDebian Almquist Shell)而不是bash(the GNUBourne-Again Shell).
但Login Shell还是bash. 原因是dash更快、更高效,而且它符合POSIX规范。Ubuntu在启动的时候会运行很多shell脚本,使用dash可以加快启动速度。

什么是bash

 Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等,Shell Script大致都类同,当您学会一种Shell以后,其它的Shell会很快就上手,大多数的时候,一个Shell Script通常可以在很多种Shell上使用

什么是dash

dash is the standard command interpreter for the system. The current version of dash is in the process of being changed to conform with the POSIX 1003.2 and 1003.2a specifications for the shell.

查看系统默认shell

方式1:
echo $SHELL

 方式2:

ll /bin/sh 

我们会发现Ubuntu默认采用的是 dash

切换默认shell为bash

如果要修改默认的sh,可以采用命令

sudo dpkg-reconfigure dash 

 ä¿®æ”¹é»˜è®¤sh为bash

选择否 :
 
检查:

echo $SHELL 

 

修改成功!

切换默认shell为dash(同上)

Dash和Bash的语法区别

Dash和Bash的语法区别

 

 

参考链接:

https://blog.csdn.net/gatieme/article/details/52136411

https://blog.csdn.net/jamesshaoya/article/details/73457896

 

以上是关于Linux shell语言——dash和bash的主要内容,如果未能解决你的问题,请参考以下文章

Linux-SHELL中sh和bash的区别

Ubuntu系统下bash和dash的区别

Linux shell基础

sh Ubuntu Dash to Bash(和返回):更改默认shell环境(因为Dash是一个精简Bash)

sh Ubuntu Dash to Bash(和返回):更改默认shell环境(因为Dash是一个精简Bash)

sh Ubuntu Dash to Bash(和返回):更改默认shell环境(因为Dash是一个精简Bash)