Debian上把/bin/sh指向dash

GNU/Linux 操作系統中的 /bin/sh 是 bash(Bourne-Again Shell)的符號鏈接,但鑑於 bash 過於複雜,有人把 ash 從 NetBSD 移植到 Linux 並更名爲 dash(Debian Almquist Shell),並建議將 /bin/sh 指向它,以獲得更快的腳本執行速度。Ubuntu 號稱自從他們在 6.10 版裏這樣做了以後,系統啓動速度有了明顯的提升。Debian 計劃在下一個發行版(代號 lenny)中也將 dash 作爲默認的 /bin/sh。

 

  按照慣例(以及很多寫腳本的規範),標記爲“#!/bin/sh”的腳本不應使用任何 POSIX 沒有規定的特性(使用 bash 特性的腳本要使用“#!/bin/bash”),所以在理論上,這樣應該沒有任何副作用。但是現實中,Linux 下的很多(不規範的)腳本有所謂 bashism,卻在文件頭標記爲“#!/bin/sh”。有人把腳本失敗歸咎於 Ubuntu 而不是自己的腳本,這是不公平的。

  剛纔在 Debian (testing)下嘗試用 dash 作爲 /bin/sh,並重啓了一下系統,好像快了那麼一點點(心理作用?)不過我想它節約的那點時間也許比掛載我的兩個 reiserfs 分區用的時間還要少……

  遇到的問題:自己的兩個腳本掛了,把“#!/bin/sh”改爲“#!/bin/bash”;自己的一個帶 bashism 的 Makefile 掛了,加上“SHELL=/bin/bash”。

  在 Debian 下,先安裝軟件包 dash,然後 dpkg-reconfigure dash,回答 Yes 即可。

  在 Ubuntu 下這已經是默認,如果因爲某些原因需要改回到 bash,也是用 dpkg-reconfigure dash。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章