Debian dan Ubuntu beralih ke tanda hubung (iirc) karena beberapa hal. Pertama-tama, Bash telah menjadi besar selama bertahun-tahun. Bahkan, /bin/bash
biner pada sistem Ubuntu 8.04 saya hampir sepuluh kali lipat (!) /bin/dash
. Sekarang, itu tidak masalah banyak untuk penggunaan shell sehari-hari, tetapi itu penting dalam situasi berikut:
- Dash jauh lebih kecil dan karenanya memuat lebih cepat, yang merupakan anugerah bagi skrip init. Jika Anda harus memulai banyak dari mereka, memuat Dash bukannya Bash setiap kali, mempercepat segalanya.
- Karena ukuran Dash yang lebih kecil, Debian dan Ubuntu dapat memangkas sebagian besar ukuran initrd mereka, menyisakan lebih banyak ruang untuk hal-hal lain (dan sekali lagi, mempercepat segalanya).
Kelemahan dari menggunakan Dash daripada Bash untuk skrip, adalah bahwa banyak orang menggunakan basa sintaksis yang hanya dimiliki Bash, yang disebut Bashism . Contoh Bashisme adalah substring, seperti ini:
echo $SHELL
/bin/bash
a=1234567890
echo ${a}
1234567890
echo ${a:3}
4567890
echo ${a:3:1}
4
Dan ini:
echo ${a#123}
4567890
Dash, di sisi lain terutama bertujuan untuk mematuhi POSIX (dan tidak lebih dari itu), akan memberi Anda kesalahan substitusi yang buruk jika Anda mencoba ini:
echo $SHELL
/bin/dash
# actually, it will read /bin/bash above, because if you just run dash
# it will not set the $SHELL variable :)
a=1234567890
echo ${a}
1234567890
echo ${a:3}
dash: Bad substitution
Ini akan menjadi masalah jika Anda menggunakan /bin/sh
(dan karenanya dash
) sebagai penerjemah untuk shellscripts Anda dan menggunakan Bashisme di dalamnya. Debian dan Ubuntu memiliki halaman wiki yang bagus tentang Bashisme dan mengapa mereka buruk dalam skrip shell secara umum dan skrip init pada khususnya. Karena itu, Anda harus secara sadar memilih apakah Anda perlu /bin/sh
atau /bin/bash
sebagai juru bahasa naskah Anda.
Dash tidak seharusnya digunakan sebagai shell default pada sistem Anda. Cukup gunakan Bash untuk itu. Untuk portabilitas skrip Anda, Anda dapat menggunakan Dash sebagai penerjemah untuk meningkatkan peluang skrip berjalan di Linux rasa dan Unix lainnya.