Bununla birlikte, Korn kabuğu - POSIX kabuğundan farklı bir şey olarak - ticari Unix dünyasının dışında hiçbir zaman popüler olmadı. Bunun sebebi, yükselişinin Unix'in ticarileşmesinin ilk yıllarına tekabül etmesiydi, bu yüzden Unix savaşlarında yakalandı . BSD Unixes, C kabuğu lehine istifa etti ve kaynak kodu başladığında Linux'ta serbestçe kullanılamıyordu. Dolayısıyla, ilk Linux distribütörleri Linux çekirdeği ile gitmek için bir komut kabuğu aramaya başladıklarında, genellikle bahsettiğin uyumlu olanlardan biri olan GNU Bash'ish
seçtiler.
Yukarıda "kabuk betiği", Bourne / POSIX kabuk betiği anlamına gelen genel bir terim olarak kullandım. Bu Bourne ailesi kabukları her yerde olması nedeniyle. Diğer kabuklarda komut dosyası yazmak hakkında konuşmak için, "C kabuk betiği" gibi bir niteleyici vermeniz gerekir. Bir C ailesi kabuğunun varsayılan etkileşimli kabuk olduğu sistemlerde bile , Bourne kabuğunu komut dosyası olarak kullanmak daha iyidir .
Bir Bourne ailesi kabuk betiğinin taşınabilir olup olmadığını kontrol etmenin birçok yolu vardır:
BSD Unix'in ilk sürümleri V6 Unix için yeni eklenti yazılım koleksiyonlarıydı. Bourne kabuğu AT & T Unix'e V7'ye kadar eklenmediğinden BSD teknik olarak Bourne kabuğuna sahip olmadı. BSD'nin Thompson kabuğunun ilkel doğasına cevabı C kabuğuydu .
Bununla birlikte, BSD'nin ilk bağımsız sürümleri (2.9BSD ve 3BSD), V7'ye veya taşınabilir halefi UNIX / 32V'ye dayanıyordu , bu nedenle Bourne kabuğunu da içeriyorlardı.
(2BSD hattı Digital'in için BSD paralel çatal dönüştü PDP minibilgisayarlarının 3BSD ve 4BSD hatları gibi yeni bilgisayar türlerinden yararlanmak için devam ederken, Vaxen ve Unix iş istasyonları 2.9BSD esasen 4.1cBSD PDP versiyonu vardı;. Olduklarını eş ve paylaşılan kod . VAX geldiğimde 2BSD çizgisi bu nedenle PDPs sadece kaybolmadı hala sürüyerek birlikte .)
Bourne kabuğunun 1983 yılına kadar Unix dünyasında her yerde olduğunu söylemek güvenlidir. Bu bilgisayar endüstrisinde "sonsuza kadar" yaklaşımı için iyi bir yaklaşımdır. MS-DOS, o yıl hiyerarşik bir dosya sistemine sahipti (awww, ne cuuute!) Ve ilk 24-bit Macintosh 9 "B&W ekranıyla - gri tonlamalı değil, tam anlamıyla siyah ve beyaz - gelecek yılın başlarına kadar çıkmadı.
Thompson kabuğu bugünün standartlarına göre oldukça ilkeldi . Bugün beklediğimiz script programlama ortamı yerine sadece etkileşimli bir komut kabuğu idi. Bir "Unix kabuğunun" prototipik bir parçası olarak düşündüğümüz borular ve G / Ç yönlendirmeleri gibi şeylere sahipti, böylece MS-DOS komut kabuğunu Unix'ten aldıklarını düşünüyoruz .
Bourne kabuğu da yerini PWB kabuğu programlanabilirliği gibi Thompson kabuğuna önemli şeyler eklendi ( if
, switch
ve while
) ve ortam değişkenleri erken formu. PWB kabuğu, Unix'in her versiyonunun bir parçası olmadığı için Thompson kabuğundan bile daha az hatırlanıyor.
Birisi POSIX - Bourne kabuk uyumluluğu konusunda spesifik değilse , onların ifade edebileceği birçok şey vardır.
Bir uçta, 1979 Bourne kabuğunu taban çizgisi olarak kullanıyor olabilirler. Bir " sh
: bu anlamda uyumlu bir komut dosyası" Doğru Bourne kabuğu veya halefleri ve klonların herhangi üzerinde mükemmel olmasının beklendiği anlamına geleceğini ash
, bash
, ksh
, zsh
, vb
Diğer uçtaki biri POSIX tarafından belirtilen kabuğun bunun yerine temel olduğunu varsaymaktadır. Bugünlerde pek çok POSIX kabuğu özelliğini "standart" olarak alıyoruz, genellikle Bourne kabuğunda bulunmadıklarını unutuyoruz: yerleşik aritmetik, iş kontrolü, komut geçmişi, takma adlar, komut satırı düzenleme, $()
komut biçimi ikame vb.
Korn kabuğunun kökleri 1980'lerin başlarına kadar gitmesine rağmen, AT&T 1988'de System V Release 4'e kadar Unix'te göndermedi . Çok sayıda ticari Unix, SVR4'ü temel aldığından, bu ksh
, hemen hemen her ilgili ticari Unix'i içeriyordu. 1980'lerin sonunda
(Birkaç garip Unix birliği dayalı SVR3 ve önceki SVR4 serbest bırakılması geçmiş pazarın parçaları üzerine düzenlenen, ama onlar duvara karşı ilk zaman devrim geldi.)
1988 ayrıca Korn kabuğu tabanlı "POSIX kabuğu" ile ilk POSIX standardının çıktığı yıl oldu . Daha sonra, 1993 yılında, Korn kabuğunun geliştirilmiş bir versiyonu çıktı. POSIX orijinalini etkili bir şekilde çivileştirdiğinden, ksh
iki ana sürüme ayrılmıştır: ksh88
ve ksh93
bölünmelerine katılan yıllar sonra adlandırılmıştır.
ksh88
Tamamen POSIX uyumlu değil, farklar küçük olsa da, ksh88
kabuğun bazı sürümleri POSIX uyumlu olacak şekilde yamalıydı. (Bu Slashdot’ta Dr. David G. Korn’la yapılan ilginç bir röportajdan . Evet, kabuğu yazan adam.)
ksh93
olan POSIX kabuğun tam uyumlu kümesidir . Geliştirme ksh93
olmuştur sporadik birincil kaynak deposu AT & T taşındı beri GitHub'dan için bu, ksh93v yazarken yeni sürümü yaklaşık 3 yaşında olmak. (Projenin temel adı ksh93
, 1993'ten sonraki sürümleri belirtmek için eklenen son eklerle kalır .)
POSIX kabuğundan ayrı bir şey olarak bir Korn kabuğu içeren sistemler, genellikle /bin/ksh
bazen başka yerlerde saklanıyor olmasına rağmen, onu mümkün kılar .
ksh
Korn kabuğu hakkında veya adıyla konuştuğumuzda ksh93
, geriye dönük uyumlu Bourne ve POSIX kabuk alt kümelerinden ayıran özelliklerden bahsediyoruz . Sen nadiren saf rastlamak ksh88
bugün.
AT&T, Korn'un kabuk kaynak kodunu Mart 2000'e kadar özel tuttu . Bu noktada, Linux'un GNU Bash ile ilişkisi çok güçlüydü. Bash ve ksh93
her birinin diğerine göre avantajları var , ancak bu noktada atalet, Linux'u Bash ile sıkı bir şekilde ilişkilendirmeye devam ediyor.
Erken Linux satıcıları en sık üzerinde GNU Bash tercih neden olarak pdksh
, oldu Linux başlamıştım anda mevcut, ben kullanıcı adasında geri kalanının çok da geldi yüzünden olduğunu tahmin ediyorum GNU projesinin . Bash geliştiricilere göre biraz daha gelişmiş pdksh
, çünkü Bash geliştiricileri Korn kabuk özelliklerini kopyalamakla yetinmiyorlar.
Üzerinde çalışmak pdksh
AT & T gerçek Korn kabuk için kaynak kodunu yayınladı zaman hakkında durdu. Bununla birlikte, halen korunan iki ana çatal vardır: OpenBSD pdksh
ve MirBSD Korn Shellmksh
,.
mksh
Şu anda Cygwin için paketlenmiş tek Korn kabuğu uygulaması olduğunu ilginç buluyorum .
GNU Bash, POSIX’in ötesine birçok yönden gider, ancak sizden daha saf bir POSIX modunda çalışmasını isteyebilirsiniz .
csh
/ tcsh
1990'lı yılların başlarında BSD Unix'lerdeki varsayılan etkileşimli kabuk oldu.
Bir BSD değişkeni olan Mac OS X'in ilk sürümleri, Mac OS X 10.2 "Jaguar" aracılığıyla bu yoluydu . OS X tcsh
, OS X 10.3 "Panther" içindeki varsayılan kabuğu Bash'den Bash'e geçirdi . Bu değişiklik, 10.2'den veya daha önceki bir sürüme yükseltilmiş sistemleri etkilememiştir. Dönüştürülen sistemlerdeki mevcut kullanıcılar tcsh
kabuklarını korudu .
FreeBSD hala tcsh
varsayılan kabuk olarak kullanıldığını iddia ediyor , ancak burada bulunan FreeBSD 10 VM'de varsayılan kabuk POSIX uyumlu Almquist kabuk değişkenlerinden biri gibi görünüyor . Bu NetBSD için de geçerlidir.
OpenBSD, pdksh
bunun yerine varsayılan kabuk olarak bir çatal kullanır .
Linux ve OS X'in yüksek popülaritesi, bazı kişilerin FreeBSD'nin de Bash'e geçmesini istemesini sağlıyor, ancak felsefi nedenlerden dolayı yakın zamanda bunu yapmayacaklar . Bu sizi rahatsız ediyorsa, değiştirmek kolaydır .
/bin/sh
Bugünlerde olduğu gibi gerçekten vanilya Bourne kabuğu olan bir sistem bulmak nadirdir . Uyumluluk testi için kendisine yeterince yakın bir şey bulmak için yolunuzu kapatmalısınız.
Ben modern bir bilgisayarda bir hakiki 1979 bağbozumu Bourne kabuğu çalıştırmak için tek yol farkındayım: kullanmak Antik Unix V7 ile disk görüntüleri SIMH PDP-11 simülatörü gelen Bilgisayar Tarihi Simülasyon Projesi . SIMH , sadece Unix benzeri olanlar için değil , hemen hemen her modern bilgisayarda çalışır . SIMH bile çalışır Android'de ve iOS'ta .
İle OpenSolaris'i , Güneş -açmak kaynaklı ilk kez Bourne kabuğunun SVR4 sürümünü. Bundan önce, Bourne kabuğunun V7 sonrası sürümleri için kaynak kodu yalnızca Unix kaynak kodu lisansı olanlara açıktı.
Bu kod artık geçersiz olan OpenSolaris projesinin geri kalanından birkaç farklı kaynaktan temin edilebilir.
En doğrudan kaynak Heirloom Bourne kabuğu projesidir . Bu, 2005 OpenSolaris’in yayımlanmasından kısa bir süre sonra ortaya çıktı. Bazı taşınabilirlik ve hata onarım çalışmaları önümüzdeki birkaç ay içinde yapıldı, ancak daha sonra proje geliştirme durdu.
Jörg Schilling, bu kodun bir versiyonunu Schily Tools paketinde olduğu gibi sürdürmek için daha iyi bir iş osh
çıkardı . Bu konuda daha fazla bilgi için yukarıya bakın.
2005 kaynak kod sürümünden türetilen bu kabukların çok baytlı karakter kümesi desteği, iş kontrolü, kabuk işlevleri ve orijinal 1979 Bourne kabuğunda bulunmayan diğer özellikleri içerdiğini unutmayın.
Orijinal bir Bourne kabuğu üzerinde olup olmadığınızı söylemenin bir yolu, Thompson kabuğundan geçişi kolaylaştırmak için eklenen belgelenmemiş bir özelliği destekleyip desteklemediğini görmek: ^
takma adı olarak |
. Yani, gibi bir komut ls ^ more
Korn veya POSIX tipi bir kabukta hata verir, fakat ls | more
gerçek bir Bourne kabuğu gibi davranır .
Bazen bir karşılaşmaya fish
, scsh
ya rc/es
yapışık, ama C kabuk fanlar daha nadir konum.
rc
Kabukları ailesi yaygın Unix / Linux sistemlerinde kullanılmaz, ama aile yukarıdaki şemada yer kazandı nasıl olduğu tarihsel önemlidir. Bell Labs'ın işletim sistemi tasarımı konusundaki araştırmalarının bir parçası olarak oluşturulan 10. basım Unix'in halefi olan Bell Labs işletim sisteminden Plan 9'unrc
standart kabuğudır . Programlama seviyesinde hem Bourne hem de C kabuğu ile uyumlu değildir; Muhtemelen orada bir ders var.
En aktif varyantı rc
görüntülenene olduğu Toby Goodwin tutulan bir UNIX dayanmaktadır, rc
Byron Rakitzis ile klon.
sh
) ile uyumlu (çalıştırılabilir) sözdizimi kullanıp kullanmadığını belirtir . Farklı bir kabuk için, o kabuğun Bourne kabuk komut dosyalarını çalıştırıp çalıştırmayacağı anlamına gelir.