Linux'ta bash neden standarttır?


19

En yeni Linux dağıtımları, bash'ı varsayılan kabuk olarak içerir, ancak başka (muhtemelen) daha iyi kabuklar da vardır.

Bunun kimsenin değiştirmek istemediği bir tarihsel kalıntı olup olmadığını anlamaya çalışıyorum ya da bash'ı ilk tercih yapan iyi nedenler var mı?


19
Diğer bilgisayarların, muhtemelen daha iyi işletim sistemleri olmasına rağmen, çoğu bilgisayar MS Windows yüklü olarak satılmaktadır.
choroba

Bash basit. Genellikle kullanıcının istediği her şeyi yapabilir. Kolayca değiştirebilirsiniz. Varsayılan olarak scsh'ye sahip olmak eğlenceli olmayacaktır.
cnd

4
Bash, /bin/sh'normal' UNIX-es'deki varsayılan kabuk olan UNIX standardının OSS uygulamasıdır
Jan Marek

Bunu bir wiki bağlantısı biliyorum ama sorunuzu derinlemesine cevaplıyor, Bir kabuğun diğer en.wikipedia.org/wiki/Unix_shell
whoami

6
Lütfen (tartışmalı olarak) daha iyi tanımlayın . bashEn iyi kabuk olduğunu düşünüyorum çünkü iyi biliyorum ve her yerde, ihtiyaç duyduğum her şeyi kısaca ve nispeten kolay bir şekilde yapıyor, kolayca okunabilir ve bash betikleri nasıl oluşturulacağını bilmeden insanlar tarafından biraz anlaşılabilir. Bir kabuktan başka ne istiyorsun? Çok sayıda programlama özelliği istiyorsanız, yanlış bir kabuk kullanıyorsunuz.
nicerobot

Yanıtlar:


18

Kısa cevap, linux'un gerçekten GNU / Linux olmasıdır. Sadece çekirdek linux'dur, ancak Unix benzeri ortamı sağlayan yardımcı programların temel koleksiyonu GNU tarafından sağlanır ve GNU kabuğu bash'dir
Dediğim gibi, bu kısa cevaptır;)

bazı yorumlar eklemek için düzenlendi ...
Unix tarihçisi olmadığımı söyleyerek önek vereyim, böylece sadece IMHO

Birkaç nokta, her şeyden önce bash, emacs editörlere olduğu gibi kabukların mutfak lavabosudur.
Bash'ın serbest bırakıldığı sırada ücretsiz ksh uygulamaları yoktu, tcsh ücretsiz bir csh'in yerini aldı, ancak Stallman kabuk programlama için csh'a karşı bir rant yaptı.
Etkileşimli bir kabuk bash mükemmel geçmiş / komut hatırlama vardı, oturumdan oturuma geçmişin kaydedilmesi ile birlikte. Bu kabuk programlama için sh, bsh, ksh yerine bir damla oldu ve iyi bir interaktif kabuk için yapılmış.
Yokuş aşağı yuvarlanan bir kartopu gibi, bash ivme ve boyut kazandı.

Evet, düzinelerce başka kabuk var; münferit amaç ya da tat için daha uygun olan mermiler, ama kabuk bash çevresindeki tek bir kişi için iyi bir iş yapar ve 20 yılı aşkın süredir üzerinde çok fazla gözü vardır.


Anlıyorum. Ancak, çoğu dağıtım GNU olmayan diğer yazılımları da içerir. Bana öyle geliyor ki bash, tıpkı Windows tarafından baskın bir işletim sistemi olarak yorumlanan choroba gibi, kullanıldığı için kullanılıyor. Ancak, onlarca yıldır Windows, diğer işletim sistemlerine geçmeyi zorlaştıran daha iyi donanım desteğine (sürücüler) sahipti. Kullanıcıların geçiş yapmasını önlemek için Bash'in sunduğu benzersiz özelliği göremiyorum.
Milan Babuškov

Kısa ve basit cevap için +1 ve iyi bir @bdowning :-)
Nikhil Mulley

2
MilanBabuškov Bash @ gerekir hangi kullanım bash özgü özellikleri çok fazla komut dosyası olduğundan kurulabilir. Bu varsayımdan başladıktan sonra, ek mermileri haklı çıkarmalısınız. Dash, önyükleme sürelerini kısaltma planının bir parçası olarak Ubuntu gibi disklere dahil edildi. Bash'ın etkileşimli bir kabuk olarak "yeterince iyi" olduğu düşünüldüğünde, başka hiçbir kabuk varsayılan paket yüklemesinin bir parçası olmaya yetecek kadar güçlü bir argüman sunmamıştır.
ssokolow

12

Bash'in bazı potansiyel rakipleri var:

  • Zsh daha gelişmiş etkileşimli olanaklara sahiptir, ancak komut dosyası oluşturma söz konusu olduğunda birkaç tuhaflık vardır (şimdi günlerden daha az). Linux'un bebeklik döneminde olduğu 1990'ların başından ortalarına kadar, zsh neredeyse bilinmiyordu.
  • Ksh , 1980'lerin ortalarından bu yana ticari birleşmelerde fiili standarttı, ancak 2000 yılına kadar tescilli bir yazılımdı, bu yüzden Linux'ta bir seçenek değildi. Ayrıca, ksh'ın bash ile karşılaştırıldığında subpar komut satırı sürümü yetenekleri vardı.
  • Ücretsiz bir ksh klonu olan Pdksh bir seçenek olurdu, ancak iyi bilinmiyordu ve komut satırı sürümü yetenekleri zayıftı. (Pdksh artık bazı BSD'lerde kullanılmasına rağmen artık çok aktif bir proje değil, şimdi ATT ksh ücretsizdir.)
  • Bazı dağıtımlar bir kül varyantı kurar /bin/sh. Ash (ash olarak adlandırılan gevşek kabuk ailesinden herhangi birini kastediyorum), interaktif özellik içermeyen küçük ve hızlı olacak şekilde tasarlanmıştır (sadece komut dosyalarını düzenlemek için). Kül canlanması nispeten yenidir; 1990'larda mevcut varyantların pek çok özelliği yoktu.
  • Tsh , zsh gelene kadar en gelişmiş etkileşimli kabuktu , ancak sh ile uyumsuz ve komut dosyası oluşturma ile o kadar iyi değil .

Ayrıca bash resmi GNU kabuğudur ve Linux sistemleri gerçekten GNU / Linux'tur : en iyi bilinen kısım Linux çekirdeği olmasa bile çekirdek programların çoğu GNU'dan gelir. O zamanlar fiili standart haline geldi, bash iyi biliniyordu, resmi bir statüye sahipti ve iyi bir dizi özelliğe sahipti.


Anladığım kadarıyla, POSIX standardı Bourne kabuğu için / bin / sh'de gerekli özellikleri belirtir ve Linux dağıtımlarının çoğu Bourne kabuğunu kullanmak için yazılan kabuk komut dosyalarına bağlıdır. BASH temelde Bourne kabuğunun gelişmiş bir versiyonudur ve / bin / sh aslında / bin / bash için bir bağlantıdır, yürütüldüğünde sadece Bourne kabuk özellikleri ile çalışır.
bgvaughan

@bgvaughan Bazı dağıtımlar bash gibi /bin/sh, diğerleri ise kül gönderir . Örneğin Ubuntu bir /bin/shsüredir dash(Debian tarafından tutulan kül çatalı). Bash daha fazla özelliğe sahiptir, kül daha küçük ve daha hızlıdır. Her ikisi de POSIX uyumludur (veya en azından pratikte yeterince uyumludur).
Gilles 'SO- kötü olmayı bırak'

4

En basit cevap? Çünkü bir şey varsayılan olmak zorundadır. En mantıklı varsayılan, çoğu kullanıcının zaten rahat olduğu varsayılan ayardır. Bu noktada Bash iyi bir seçimdir. Herkes kendi dünyasında hangisinin en iyi olduğunu seçme özgürlüğüne sahiptir. Çoğu, her zaman ihtiyaç duyduklarını yaptıysa varsayılanı kullanmayı seçecektir.


3

DOS'tan geliyor (doskey yüklüyken) Gerçekten sadece imleci yukarı / aşağı hareket ettirerek son komutları hatırlama özelliğini kaçırdım. BASH, bunu * nix üzerinde uygulayan ilk kabuk IMO'ydu.

Muhtemelen bu nesilden itibaren çoğu erkek bash'ı sevdi.


1990'lara kadar bir bilgisayar tcshkullanmasam da, kabuk geçmişinde ileri ve geri gitmek için ok tuşlarını kullanan ilk * nix kabuk olan varsayımdaydım .
Anthony G - Monica için adalet

1

Diğer tüm cevaplar harika, ama pratik bir bakış açısıyla: Eğer bilmediğim bir sistemin önünde oturursam (veya uzaktan erişirim) ve bir şey yapmam gerekiyorsa, bash'ın en eski sistemlerin dışında mevcut olmasına güvenebilirim. Sadece devam edip işleri halledebilirim.

Diğer cevaplarda ve sorunuzda belirtildiği gibi, başka kabuklar da var (zsh hakkında çok iyi şeyler duyuyorum, ama denemedim.), Ancak sözdizimine ve bazen kullanılan komutlara göre değişir. işleri halletmek için. Eğer sadece bir şey yapmak istiyorsam, bash başka bir kabuğa uyum sağlamak zorunda kalmadan yeterince zor.

Ayrıca, genellikle yararlı olabilecek bir kabuk komut dosyası yazdığımda, bash için yazıyorum ve sisteme bağlı şeyler yapmamaya çok dikkat edersem, neredeyse her yerde çalışacağını biliyorum.


1

Eylemsizlik.

Linux (tercih ederseniz GNU / Linux) sistemleri görünmeye başladığında Bash en kolay ulaşılabilir ücretsiz kabuk oldu. GNU projesinden gelmesi acı vermedi.

Neden hala varsayılan kabuk olduğuna gelince, onu değiştirmek için asla yeterince iyi bir neden yoktu. Başka bir kabuk daha iyi olsa bile, farklı dağıtımlarda aynı varsayılan giriş kabuğuna sahip olmanın avantajları vardır ve herkesi (Debian, Red Hat, Suse, vb.) Başka bir şeye geçmeyi kabul etmek zor olacaktır.

Sonuçta, bu sadece bir varsayılan. Herhangi bir kullanıcı chshoturum açma kabuğunu değiştirmek için kullanabilir . Herkes için varsayılanı değiştirmeye gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.