Yang lain telah menunjukkan bahwa premis pertanyaan, bahwa shell Bourne Again adalah default dan ada di mana-mana, benar-benar salah.
Selain itu, memang ada alasan bagus untuk menggunakan sesuatu selain shell Bourne Again untuk menafsirkan skrip shell. Alasan-alasan ini termotivasi Ubuntu dan proyek besar Debian, selama beberapa tahun, untuk menghapus bashisms dan untuk membuat sebagai banyak script shell yang dijalankan oleh inisialisasi sistem (yang merupakan banyak script shell dengan Sistem 5 rc
) dan paket instalasi / penggunaan penghapusan tersebut Shell Debian Almquist, bukan shell Bourne Again.
Sederhananya: shell Bourne Again, penuh dengan fitur-fitur interaktif seperti itu, bukan penerjemah shell tercepat untuk skrip shell POSIX-conformant. Jadi jika seseorang dapat membuat skrip shell POSIX-conformant, menafsirkannya dengan program yang lebih ringan, seperti shell Debian Almquist, sistem seseorang akan berkinerja lebih baik. (Pada akhirnya, Debian harus membuat sedikit penyesuaian pada shell Almquist, untuk menambahkan dukungan untuk beberapa konstruksi shell non-POSIX yang terlalu dalam dan luas tertanam dan terlalu berguna untuk dihilangkan.)
Hasil dari semua itu adalah keuntungan besar dalam kinerja bootstrap.
Jadi ada dua kelas shell yang perlu dipertimbangkan, di sini:
- Kerang dengan semua fitur interaktif mencolok, yang dikonfigurasikan sebagai kerang masuk interaktif untuk pengguna dalam basis data akun.
- Kerang yang menafsirkan banyak skrip dengan cepat, yang digunakan sebagai penerjemah skrip oleh program skrip shell.
Perhatikan bahwa membicarakan ini sebagai "preferring /bin/sh
" terlalu menyederhanakan. Debian sebenarnya memiliki setidaknya dua tujuan:
Di hadapan administrator yang menggunakan shell Debian Almquist, Shell Z (dalam mode POSIX), shell Bourne Again (dalam mode POSIX), shell MirBSD Korn, dan lainnya seperti /bin/sh
, ada salah satu…
... membuat skrip se portable mungkin, sehingga mengalihkan apa yang /bin/sh
dipetakan ke tidak merusak; atau
... membuat skrip non-portabel secara eksplisit menargetkan program interpreter yang benar , alih-alih hanya mengharapkan /bin/sh
peta itu untuk itu.
Ada membuat Debian Almquist shell pemetaan default untuk /bin/sh
bukan Bourne Shell, sehingga mereka skrip yang berada POSIX-konforman (atau, lebih tepat, Kebijakan Debian Pedoman conformant) berlari lebih cepat.
Dan tentu saja begitu seseorang masuk ke dalam ini, seseorang dapat mengambilnya lebih jauh; seperti mempertimbangkan efisiensi pengorbanan dari suka /bin/true
dan /usr/bin/clear
menjadi skrip shell atau program yang disusun. Tapi untungnya itu di luar jangkauan jawaban ini. ☺
Tidak satu pun dari ini yang sangat baru, atau bahkan tidak spesifik-Unix, tentu saja. Kembali sebelum pergantian abad, saya menulis dan menerbitkan juru bahasa command-line yang datang dalam rasa "interaktif" dan "non-interaktif", menjelaskan pembagian ini dalam dokumennya dan mencatat perbedaan antara variabel lingkungan COMSPEC
dan OS2_SHELL
. Demikian pula, diskusi tentang menghapus bashism di Sistem V Debian rc
dan skrip instalasi / penghapusan paket kembali ke tahun 1990-an.
Bacaan lebih lanjut
/bin/sh
jika Anda tidak menggunakanbash
fungsi tertentu . Suatu hari Anda bisa menggunakan salah satu skrip Anda pada sistem yang tidak diinstal (server jarak jauh, komputer yang disematkan ...)