Mengapa bash shell default di sebagian besar OS (Ubuntu, Fedora, OSX, dll.)? Mengapa banyak pengguna tingkat lanjut sebagian besar menggunakan zsh? Jika sehebat itu, mengapa itu tidak baku?
Saya menggunakan keduanya, saya tidak melihat perbedaan karena semua tugas saya sederhana :)
bash
default
zsh
history-of-ubuntu
Talal
sumber
sumber
ksh
, maka juga benar bahwa kebanyakan orang menggunakan shell yang berbeda, dan ini dengan sendirinya akan menjelaskan mengapaksh
bukan shell default. Namun saya tidak berpikir itu alasannya, mari kita tunggu jawaban pembunuh yang saya yakin pertanyaan ini akan terima.Jawaban:
Saya melakukan beberapa bacaan tentang ini dan kesimpulannya sepertinya itu adalah shell default dari GNU (digunakan oleh sebagian besar OS berbasis Linux), dan oleh karena itu hanya dikemas sebagai bagian dari GNU, sementara juga memiliki 20 tahun pengembangan di belakangnya membuatnya menjadi stabil dan berpengetahuan luas, ini hanyalah yang terbaik serba bisa, memenuhi kebutuhan semua orang kecuali pengguna yang paling canggih.
Untuk lebih lanjut, baca Mengapa standar bash di Linux? (pertanyaan yang sama di Unix & Linux).
Hanya untuk menambahkan sedikit lebih banyak ke ini, ada banyak kerang lain untuk dicoba, jika Anda tertarik, berikut beberapa dari jawaban ini :
sumber
The Bourne Shell ( sh kembali pada hari) dari AT & T cabang Unix itu diperbaiki dan diganti oleh Korn Shell, ksh . ksh juga keluar dari AT&T Bell Labs dan bukan GPL (versi saat ini adalah Eclipse Public License). C-shell, csh keluar dari Unix versi Berkeley dan juga bukan GPL (lisensi BSD) dan juga menggunakan sintaks yang berbeda dari sh. Z-shell, zsh adalah peningkatan pada sh tetapi bukan GPL (lisensi mirip MIT). Bash merupakan perbaikan pada sh, menggunakan GPL dan dari GNU. Hanya pada lisensi saja Bash mungkin akan menjadi pilihan untuk sistem operasi GPL. Terutama dengan shell yang menjadi bagian inti dari sebuah distro.
Tetapi Bash juga merupakan proyek GNU, memberikannya, saya pikir, pengembangan yang lebih aktif dan membuat kontribusi lebih mudah daripada produk warisan dari Berkeley Unix atau AT&T Unix. Sebuah kasus yang sangat bagus dapat dibuat bahwa zsh adalah dan telah menjadi shell yang lebih baik daripada Bash, tetapi tidak cukup untuk mengatasi perbedaan lisensi dan status proyek non-GNU.
Kembali ketika distro Linux pertama kali muncul dan memilih shell default mereka (awal hingga pertengahan 90-an), tidak ada github (2008) atau bahkan SourceForge (1999). Pada saat itu, saya pikir proyek-proyek GNU memiliki keuntungan nyata dibandingkan proyek-proyek non-GNU dalam mendapatkan perhatian dan menggambar dan termasuk pengembang baru. Jadi distro dapat melihat Z-shell sebagai lebih baik, tetapi juga berharap bahwa Bash akan mendapatkan dukungan dan pemeliharaan yang baik ke depan, dan juga memiliki lebih banyak fitur yang ditambahkan padanya, memungkinkannya untuk mengejar zsh.
Sekarang Bash telah memiliki status default bertahun-tahun, itu menjadi standar de facto, dengan buku-buku yang ditulis tentangnya. Ada satu buku yang mencakup Bash dan Z-shell , tetapi tidak ada buku yang membahasnya secara eksklusif, sementara ada banyak buku yang melakukannya untuk Bash.
Dan pada titik ini, jika distro mengubah default untuk peningkatan sistem yang ada, itu akan merusak pengaturan karena beberapa file inisialisasi memiliki nama yang berbeda (misalnya .bashrc versus .zshrc) dan konten file mungkin memiliki sintaksis yang tidak kompatibel. Jadi mereka akan sangat enggan untuk melakukan itu, meninggalkan unduhan baru memiliki zsh sebagai default dan memutakhirkan untuk memiliki bash. Dua default berbeda untuk distro yang sama adalah sesuatu yang mereka mungkin tidak ingin harus mendukung dan pengguna / perusahaan juga tidak mau berurusan dengan itu.
sumber
Bahasa shell Unix semuanya jelek. Beberapa khususnya (
csh
), beberapa mungkin sedikit kurang (ksh
? Saya tidak tahu sebenarnya), tetapi sebenarnya ketika datang ke aspek-aspek seperti keterbacaan dan kekakuan untuk proyek-proyek besar, tidak satupun dari mereka bisa mendekati bahasa tujuan umum yang dirancang dengan baik seperti Python, C # atau Haskell. Jadi, ketika Anda menginginkan sesuatu yang solid, Anda tidak akan pernah memilih salah satu rasa shell sama sekali.Anda memang memilih mereka ketika Anda ingin cepat menyelesaikan hal-hal sederhana. Untuk ini, Anda perlu:
sh
kompatibilitas adalah nilai tambah besar di sini, dan sekali lagi semakin populer semakin baik.Jadi Anda tahu, popularitas adalah poin yang lebih besar dalam bahasa shell ini daripada untuk bahasa tujuan umum. Oleh karena itu bahkan jika
ksh
sedikit lebih baik sebagai bahasa itu sendiri, tidak ada begitu banyak keuntungan dalam menggunakannya jikabash
hanya sedikit lebih populer (yang, di sektor yang relevan, karena pertama kali dipilih sebagai default untuk GNU).Orang-orang yang melakukan peralihan disengaja dan cukup berpengalaman untuk dengan mudah menangani peralihan ke cangkang favorit mereka. OTOH, seorang pemula yang dipaksa untuk bekerja dengan shell yang kurang populer akan cepat bingung jika mereka meminta sesuatu di internet dan itu tidak berhasil. Oleh karena itu, setiap distro yang tidak hanya ditujukan untuk veteran Unix mengambil risiko yang cukup besar jika membuat apa pun selain
bash
standar, sebuah langkah di mana relatif sedikit orang akan mendapat manfaat (dan hanya sedikit).sumber
sumber
"Massa Kritis" adalah jawaban utama, IMO. Bash bukan hanya untuk pekerjaan baris perintah, tetapi juga untuk scripting dan ada banyak sekali skrip Bash di luar sana. Tidak peduli seberapa jauh alternatif yang lebih baik sekarang untuk interaksi, kebutuhan untuk dapat "plug and play" skrip-skrip tersebut lebih besar daripada keuntungannya. Dengan demikian, satu-satunya shell yang secara realistis dapat menggeser Bash sekarang adalah yang benar-benar kompatibel dengan mundur dan kandidat yang paling mungkin untuk itu adalah ... versi Bash berikutnya.
sumber