“Orijinal sh kabuğunun neden bulunmadığına” dair kısa cevap, orijinal sh olmadığı sh
.
Tamam, işte var: bu Thompson kabuğu . Versiyon 1 bugün bildiğimiz bazı özelliklere sahipti, özellikle yönlendirme ve borular ( Dennis Ritchie'nin erken Unix tarihine dair makalesini oku ). Daha sonraki sürümlerde , arka planda yürütme &
, globbing (harici bir programla uygulanır) ve bazı alıntı biçimleri gibi özellikler eklendi , ancak değişkenlere veya iç içe geçmiş kontrol yapılarına sahip değildi. Şartlı Cümleler ve döngüler, harici programlar if
(bir koşulu ve bir komutu argüman olarak aldı) ve goto
(üst dosyasının komut dosyası dosyasındaki konumunu değiştirerek çalıştı ) sağlandı .
1979, in Unix V7 , Thompson kabuk olarak değiştirildi /bin/sh
ile Bourne kabuğu . İlk sürüm , günümüzün çizgi kısmında mevcut olan birçok özelliğe sahipti ve daha sonraki sürümlerde daha birçok tanıtıldı . Birkaç yıl sonra, Korn kabuğu sahneye, artan bir özellik seti ile geldi; birçok Unix türevi onu ad altında yüklüyordu ksh
.
1992'de POSIXsh
, temel olarak Bourne ve birkaç şey içeren minimum bir dizi özellik kodladı . Kendisini “Unix” olarak adlandıran herhangi bir sistem, en azından bu özellikleri uygulamak zorundaydı. Ticari Unix sistemleri genellikle POSIX sh olarak ksh kullandılar, ancak bir kaçının (örn. OSF / 1 ) kendilerine sahipti.
Ne Bourne kabuğu ne de Korn kabuğu son zamanlara kadar açık kaynak kodluydu, bu yüzden Linux dünyası 1990'ların ortasında oluşmaya başladığında mevcut değildi. /bin/sh
başka bir şey olmalıydı. Linux dağıtımlarının çoğu , betik özellikleri açısından Bourne ve Korn arasında olma eğiliminde olan GNU projesinin bir kabuğu olan ve etkileşimli kullanım için olduğundan daha iyi olan bash için gitti . Tek uygun alternatif bir serbest pdksh ( “kamu malı Korn kabuk”) idi (şimdi durdurulan, ancak yaşayan mksh edilir aktif gelişmiş ), ama ben pdksh kullanarak bir Linux dağıtımı hatırlamıyorum/bin/sh
Nedenini bilmiyorum, sanırım Linux dağıtımları her zaman GNU / Linux dağıtımlarıydı, temel olarak bir GNU versiyonunun var olduğu herhangi bir aracın GNU versiyonlarını gönderiyordu.
Ayrıca, sh
özellikle de Almquist kabuğu olan “kül” olarak adlandırılan birçok açık kaynak uygulaması vardı, ancak insanların kullanmak istediği bazı POSIX özelliklerinden yoksun kaldılar. Debian'ın sağlayıcısı olan bir programcı Herbert Xu , POSIX ile uyumlu hale getirmek için külü uzattı. Sonunda versiyonunun çizgi olarak değiştirildi ve /bin/sh
Debian'da bash yerine bunu yapmak için bazı baskılar vardı. Debian sistematik tedavi bashisms (içinde bash özgü işlevsellik kullanımı başlamadan önce Ubuntu başladı #!/bin/sh
gibi komut dosyaları) böcek . Hem daha sonraki (anahtarlamalı Ubuntu 6.10 , Debian sadece 2009 yılında ( o lenny için kale oldu ancak, anahtar yalnızca lenny serbest bırakıldıktan sonra yapıldı, yani sıkıldı)).
Önemli bir çizgi olarak yerine bash kullanarak nedeni olarak /bin/sh
önemli ölçüde daha hızlı olmasıdır. Bu özellikle, başlangıçtan beri önyükleme sürelerini kısa tutmaya çalışan Ubuntu için önemliydi. Dash, bash'a göre daha az bellek kullanmaya meyillidir; bu, temel program çıktığında sadece biraz temizleme yapmak için etrafta kalan sarmalayıcı komut dosyaları için biraz önemlidir. Çizginin bir diğer faydası ise, sadece libc'ye (çekirdek sistem kütüphanesi) dayanmasıdır, bash da terminal destek kütüphanelerine dayanmaktadır (onlar olmadan bir betiği çalıştırmak için bile başlayamaz); Bunun anlamı, kısa bir sistemde çalışmaya devam etmek için bu çizginin daha iyi bir şansı olduğu anlamına gelir.
21. yüzyılda bir noktada, Korn kabuğu açık kaynaklı oldu ve Bourne kabuğunun açık kaynaklı versiyonları ortaya çıktı (eski versiyonlar, çünkü gelişme yıllar önce durdu). Ancak çizgi ve bash, Linux dünyasında, kabul görmeleri için, özellikle de bugünkü değeri yalnızca tarihsel olduğu için, Bourne kabuğuna sert bir şekilde sarıldı. Dash, yerinden oynatılan bash'ın net yararları olduğu için yer değiştirdi, ancak diğer yarışmacıların hiçbirinin belirleyici bir avantajı yok /bin/sh
.