按照慣例(以及很多寫腳本的規範),標記爲“#!/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。