Mengapa standar bash di Linux?

19

Sebagian besar distribusi Linux baru-baru ini menyertakan bash sebagai shell default, meskipun ada shell lain yang lebih baik.

Saya mencoba untuk memahami apakah ini adalah sisa sejarah yang tak seorang pun ingin berubah, atau adakah alasan bagus yang menjadikan bash pilihan pertama?

Milan Babuškov
sumber
19
Sebagian besar komputer dijual dengan MS Windows diinstal, meskipun ada yang lain, OS yang mungkin lebih baik tersedia.
choroba
Bash itu sederhana. Biasanya dapat melakukan semua yang diinginkan pengguna. Anda dapat dengan mudah mengubahnya. Itu tidak akan menyenangkan untuk memiliki scsh secara default.
cnd
4
Bash adalah implementasi OSS dari standar UNIX /bin/sh, yang merupakan shell standar pada UNIX-es 'normal' ...
Jan Marek
Saya tahu ini tautan wiki tetapi menjawab pertanyaan Anda secara mendalam, Apa yang dimiliki satu shell dari yang lain en.wikipedia.org/wiki/Unix_shell
whoami
6
Silakan tentukan (bisa dibilang) lebih baik . Saya pikir bashadalah shell terbaik karena saya tahu dengan baik dan itu ada di mana-mana, melakukan semua yang saya butuhkan secara ringkas dan relatif mudah, mudah dibaca, dan dapat agak dipahami oleh orang-orang tanpa mengetahui cara membuat skrip bash. Apa lagi yang Anda inginkan dari shell? Jika Anda ingin banyak fitur pemrograman, Anda menggunakan shell secara tidak benar.
nicerobot

Jawaban:

18

Jawaban singkatnya adalah karena linux benar-benar GNU / Linux. Hanya kernelnya adalah linux tetapi kumpulan utilitas dasar yang menyediakan lingkungan mirip Unix disediakan oleh GNU dan shell GNU adalah bash
Seperti yang saya katakan, itulah jawaban singkatnya;)

diedit untuk menambahkan beberapa komentar tambahan ...
Izinkan saya awalan dengan mengatakan bahwa saya bukan sejarawan Unix, jadi saya hanya dapat menjawab IMHO

Beberapa poin, pertama-tama bash adalah wastafel dapur kerang, seperti emacs adalah untuk editor.
Pada saat bash dirilis tidak ada implementasi ksh gratis, tcsh adalah pengganti csh gratis, tetapi Stallman memiliki kata-kata kasar terhadap csh untuk pemrograman shell.
Sebagai shell shell interaktif memiliki riwayat / perintah recall yang sangat baik, bersama dengan penghematan sejarah dari sesi ke sesi. Itu adalah penurunan pengganti sh, bsh, ksh untuk pemrograman shell dan dibuat untuk shell interaktif yang layak.
Seperti bola salju yang bergulir menuruni bukit, bash telah mendapatkan momentum dan ukuran.

Ya, ada puluhan kerang lainnya; kerang yang lebih cocok untuk tujuan atau rasa individu, tetapi untuk satu di sekitar shell melakukan pekerjaan yang layak dan telah memiliki banyak mata di atasnya selama lebih dari 20 tahun.

bsd
sumber
Saya mengerti. Namun, sebagian besar distribusi mencakup banyak perangkat lunak non-GNU lainnya. Sepertinya saya bahwa bash digunakan hanya karena digunakan, sama seperti choroba berkomentar bahwa Windows adalah OS yang dominan. Namun, selama beberapa dekade Windows memiliki dukungan perangkat keras yang lebih baik (driver) yang membuatnya sulit untuk beralih ke OS lain. Saya gagal melihat fitur unik apa yang ditawarkan Bash untuk mencegah pengguna beralih?
Milan Babuškov
+1 dan @bdowning bagus untuk jawaban singkat dan sederhana :-)
Nikhil Mulley
2
@ MilanBabuškov Bash harus diinstal karena ada terlalu banyak skrip yang menggunakan fitur spesifik bash. Setelah Anda mulai dari asumsi itu, Anda harus membenarkan kerang tambahan. Dash dimasukkan dalam disto seperti Ubuntu sebagai bagian dari rencana untuk mengurangi waktu boot. Mengingat bahwa bash "cukup baik" sebagai shell interaktif, belum ada shell lain yang memberikan argumen yang cukup kuat untuk menjadi bagian dari pemuatan paket default.
ssokolow
12

Bash memiliki beberapa pesaing potensial:

  • Zsh memiliki fasilitas interaktif yang lebih canggih, tetapi beberapa keanehan dalam hal scripting (kurang begitu sekarang daripada di masa lalu). Pada awal hingga pertengahan 1990-an ketika Linux masih dalam masa pertumbuhan, zsh sebenarnya tidak dikenal.
  • Ksh adalah standar de facto pada kesatuan komersial sejak pertengahan 1980-an, tetapi itu adalah perangkat lunak berpemilik sampai tahun 2000, jadi bukan pilihan di Linux. Juga, ksh memiliki kemampuan edisi perintah baris di bawah standar, dibandingkan dengan bash.
  • Pdksh , klon ksh gratis, akan menjadi pilihan, tetapi itu tidak terkenal dan memiliki kemampuan edisi baris perintah yang buruk. (Pdksh bukan lagi proyek yang sangat aktif, meskipun masih digunakan di beberapa BSD, sekarang ATT ksh gratis.)
  • Beberapa distribusi memasang varian abu sebagai /bin/sh. Ash (yang saya maksudkan salah satu keluarga kerang longgar yang disebut ash) dirancang agar kecil dan cepat, tanpa fitur interaktif (hanya untuk mengedit skrip). Kebangkitan abu relatif baru; pada 1990-an varian yang ada tidak memiliki banyak fitur.
  • Tcsh adalah shell interaktif paling canggih sampai zsh datang, tetapi tidak kompatibel dengan sh dan tidak begitu baik dengan skrip .

Selanjutnya bash adalah shell GNU resmi , dan sistem Linux benar-benar GNU / Linux : banyak program inti berasal dari GNU, bahkan jika bagian yang paling terkenal, kernel Linux, tidak. Pada saat itu menjadi standar de facto, bash terkenal, memiliki status resmi, dan memiliki serangkaian fitur yang layak.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Seperti yang saya pahami, standar POSIX menentukan fitur yang diperlukan untuk shell Bourne, di / bin / sh, dan sebagian besar distribusi Linux bergantung pada skrip shell yang ditulis untuk menggunakan shell Bourne. BASH pada dasarnya adalah versi yang disempurnakan dari shell Bourne, dan / bin / sh sebenarnya adalah tautan ke / bin / bash, yang ketika dieksekusi berjalan hanya dengan fitur-fitur shell Bourne.
bgvaughan
@ bgvaughan Beberapa distribusi mengirim bash sebagai /bin/sh, lainnya mengirimkan abu. Misalnya Ubuntu /bin/shtelah dash(garpu abu yang dikelola oleh Debian) untuk sementara waktu. Bash memiliki lebih banyak fitur, abu lebih kecil dan lebih cepat. Keduanya patuh POSIX (atau setidaknya cukup patuh dalam praktiknya).
Gilles 'SO- stop being evil'
4

Jawaban paling sederhana? Karena sesuatu "harus" default. Default yang paling masuk akal adalah yang paling nyaman digunakan oleh pengguna. Pada saat itu Bash adalah pilihan yang baik. Setiap orang memiliki kebebasan untuk memilih mana yang terbaik, di dunia mereka. Sebagian besar akan memilih untuk menggunakan default jika selalu melakukan apa yang mereka butuhkan.

BentFX
sumber
3

Berasal dari DOS (dengan doskey terinstal) Saya sangat merindukan fitur untuk mengingat perintah terakhir hanya dengan menggerakkan kursor ke atas / bawah. BASH adalah IMO shell pertama yang mengimplementasikan ini pada * nix.

Jadi mungkin sebagian besar lelaki dari generasi itu menyukai bash.

Nils
sumber
Meskipun tidak menggunakan komputer sampai tahun 1990-an, saya berada di bawah asumsi bahwa tcshitu adalah shell * nix pertama yang menggunakan tombol panah untuk menavigasi bolak-balik melalui sejarah shell.
Anthony G - keadilan untuk Monica
1

Semua jawaban lain bagus, tetapi dari sudut pandang praktis: Jika saya duduk di depan sistem yang tidak dikenal (atau mengaksesnya dari jarak jauh) dan saya perlu melakukan sesuatu, saya dapat mengandalkan bash yang tersedia di semua sistem kecuali yang tertua. Saya bisa melanjutkan dan menyelesaikan sesuatu.

Seperti yang ditunjukkan dalam jawaban lain dan dalam pertanyaan Anda, ada banyak shell lain (saya mendengar banyak hal baik tentang zsh, tetapi belum mencobanya.), Tetapi mereka berbeda sehubungan dengan sintaks dan kadang-kadang perintah yang digunakan untuk menyelesaikan sesuatu. Jika saya hanya ingin menyelesaikan sesuatu, bash cukup sulit tanpa harus beradaptasi dengan shell lain.

Juga, ketika saya menulis skrip shell yang mungkin berguna secara umum, saya menulisnya untuk bash dan saya tahu bahwa jika saya sangat berhati-hati untuk tidak melakukan hal-hal yang bergantung pada sistem, itu akan berjalan hampir di mana saja.

Joe
sumber
1

Kelembaman.

Bash kebetulan merupakan shell gratis yang paling mudah tersedia ketika sistem Linux (GNU / Linux, jika Anda mau) mulai muncul. Fakta bahwa itu dari proyek GNU tidak ada salahnya.

Adapun mengapa itu masih shell default, tidak pernah ada alasan yang cukup baik untuk mengubahnya. Bahkan jika beberapa shell lain lebih baik, ada keuntungan memiliki shell login default yang sama di berbagai distribusi, dan akan sulit untuk membuat semua orang (Debian, Red Hat, Suse, dll.) Setuju untuk beralih ke yang lain.

Dan setelah semua, itu hanya default. Setiap pengguna dapat menggunakan chshuntuk mengubah shell login-nya. Tidak perlu mengubah default untuk semua orang.

Keith Thompson
sumber