• Ubuntu下shell脚本运行异常:bash和dash的区别


    Ubuntu下我用bash到语法写了一个shell脚本(准确的说是把书上的脚本敲进电脑),在ubuntu下,用sh test.sh来运行,但是出现了意料之外到结果,比如echo -e " Test "到执行就不同,直接用sh test.sh运行,会打印出-e(作为字符串);而直接在终端中输入echo -e " Test "是不会输出"-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就可以了

  • 相关阅读:
    正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)
    ++i? i++? i+=1? i=i+1? 何必纠结?
    数独题的生成与解决方法
    VIM常用设置
    我的“MIT Challenge”
    NDK开发之javaVM
    十二月寒冬
    Linux epoll 笔记(高并发事件处理机制)
    Linux之我见
    半夜惊醒
  • 原文地址:https://www.cnblogs.com/chjbbs/p/5895021.html
Copyright © 2020-2023  润新知