ubuntu下shell指令碼運行異常:bash和dash的區別

來源:互聯網
上載者:User

ubuntu下shell指令碼運行異常:bash和dash的區別 我用bash到文法寫了一個shell指令碼(準確的說是把書上的指令碼敲進電腦),在ubuntu下,用sh test.sh來運行,但是出現了意料之外到結果,比如echo -e "\nTest\n"到執行就不同,直接用sh test.sh運行,會列印出-e(作為字串);而直接在終端中輸入echo -e "\nTest\n"是不會輸出"-e"的。 我就在想是什麼原因,後來終於發現是Ubuntu下sh預設指向dash。echo $SHELL  -->  /bin/bashtype sh      -->  /bin/sh然後我到/bin下看了有"sh -> dash",原來sh是/bin/dash的連結。後來google了一下才發現,buntu6.10已將先前預設的bashshell更換為了dash。其表現是/bin/sh連結到了/bin/dash而不是傳統的/bin/bash。 bash - GNU Bourne-Again SHelldash - 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就可以了。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.