我是靠谱客的博主 冷傲身影,最近开发中收集的这篇文章主要介绍ubuntu下shell脚本运行异常:bash和dash的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我用 bash 到语法写了一个 shell 脚本(准确的说是把书上的脚本敲进电脑),在 ubuntu 下,用sh  test .sh来运行,但是出现了意料之外到结果,比如echo -e "nTestn"到执行就不同,直接用sh  test.sh运行,会打印出-e(作为字符串);而直接在终端中输入echo  -e "nTestn"是不会输出"-e"的。
我就在想是什么原因,后来终于发现是Ubuntu下sh默认指向 dash
echo $SHELL  -->  /bin/bash
type sh      -->  /bin/sh
然后我到/bin下看了有"sh -> dash",原来sh是/bin/dash的链接。
后来google了一下才发现,buntu6.10已将先前默认的bashshell更换为了dash。其表现是/bin/sh链接到了/bin/dash而不是传统的/bin/bash。
bash - GNU Bourne-Again SHell
dash - Debian Almquist Shell
可以分别man bash  / man dash看一下。

那么怎么把sh改为指向bash呢?
最暴力的方法当然是直接把/bin/sh的软链接改到bash中,
如:ln -s /bin/bash /bin/sh
但是,有优雅一些的方法,
sudo dpkg-reconfigure dash
出现菜单问你是否要dash的时候,选no就可以了。
再次检查一下, ls /bin/sh -al 发现软链接指向/bin/bash就可以了。 

最后

以上就是冷傲身影为你收集整理的ubuntu下shell脚本运行异常:bash和dash的区别的全部内容,希望文章能够帮你解决ubuntu下shell脚本运行异常:bash和dash的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部