Bash, Zsh ve Diğer Linux Kabukları Arasındaki Fark Nedir?

Yayınlanan: 2022-01-29

Çoğu Linux dağıtımı varsayılan olarak bash kabuğunu içerir, ancak başka bir kabuk ortamına da geçebilirsiniz. Zsh özellikle popüler bir alternatiftir ve kül, çizgi, balık ve tcsh gibi başka kabuklar da vardır. Ama fark nedir ve neden bu kadar çok var?

Kabuklar Ne Yapar?

Komut satırında oturum açtığınızda veya Linux'ta bir terminal penceresi açtığınızda, sistem kabuk programını başlatır. Kabuklar, komut satırı ortamını genişletmenin standart bir yolunu sunar. İsterseniz, varsayılan kabuğu başka bir kabukla değiştirebilirsiniz.

İlk kabuk ortamı, Bell Laboratuarlarında geliştirilen ve 1971'de piyasaya sürülen Thompson Shell'di. Shell ortamları, o zamandan beri çeşitli yeni özellikler, işlevler ve hız iyileştirmeleri ekleyerek konsept üzerine inşa ediliyor.

Örneğin, Bash komut ve dosya adı tamamlama, gelişmiş komut dosyası oluşturma özellikleri, komut geçmişi, yapılandırılabilir renkler, komut takma adları ve ilk kabuk yayınlandığında 1971'de mevcut olmayan çeşitli diğer özellikler sunar.

Kabuk ayrıca çeşitli sistem servisleri tarafından arka planda kullanılır. Linux dağıtımları, kabuk betikleri olarak yazılmış birçok işlevi içerir. Bu komut dosyaları, kabuk ortamında çalıştırılan komutlar ve diğer gelişmiş kabuk komut dosyası oluşturma işlevleridir.

Bash'e Kadar Öncü Kabuklar: sh, csh, tsh ve ksh

İLGİLİ: Unix Nedir ve Neden Önemlidir?

Modern mermilerin en önde gelen atası, AT&T'nin Bell Laboratuvarlarında çalışan yaratıcısı Stephen Bourne'un adını taşıyan “sh” olarak da bilinen Bourne kabuğudur. 1979'da piyasaya sürüldü, diğer özelliklerle birlikte komut değiştirme, borulama, değişkenler, koşul testi ve döngü desteği nedeniyle Unix'te varsayılan komut yorumlayıcı oldu. Kullanıcılar için fazla özelleştirme sunmuyordu ve takma adlar, komut tamamlama ve kabuk işlevleri gibi modern özellikleri desteklemiyordu (ancak bu sonuncusu sonunda eklendi).

Reklamcılık

C kabuğu veya "csh", 1970'lerin sonlarında Berkley'deki California Üniversitesi'nde Bill Joy tarafından geliştirildi. Takma adlar (uzun komutlar için kısayollar), iş yönetimi yetenekleri, komut geçmişi ve daha fazlası gibi kullanıcıların sistemlerini kontrol edebilecekleri birçok etkileşimli öğe ekledi. Unix işletim sisteminin kendisinin yazıldığı C programlama dilinden modellenmiştir. Bu aynı zamanda Bourne kabuğunun kullanıcılarının komutları girebilmeleri için C öğrenmeleri gerektiği anlamına geliyordu. Buna ek olarak, csh'de hem kullanıcılar hem de içerik oluşturucular tarafından uzun bir süre boyunca düzeltilmesi gereken birkaç hata vardı. İnsanlar, etkileşimli olmayan komutları daha iyi işlediği için komut dosyaları için Bourne kabuğunu kullanmaya başladı, ancak normal kullanım için C kabuğuna takıldı.

Zamanla, birçok kişi C kabuğundaki hataları düzeltti ve C kabuğuna özellikler ekleyerek "tcsh" olarak bilinen gelişmiş bir csh sürümüyle sonuçlandı. Ancak csh, Unix tabanlı bilgisayarlarda hala varsayılandı ve standart olmayan bazı özellikler eklemişti. Bell Laboratuarlarından David Korn, Bourne kabuğunun diliyle geriye dönük uyumlu olarak ancak csh kabuğundan birçok özellik ekleyerek durumu iyileştirmeye çalışan KornShell veya “ksh” üzerinde çalıştı. 1983'te piyasaya sürüldü, ancak tescilli bir lisans altında. Çeşitli açık kaynak lisansları altında piyasaya sürüldüğü 2000'li yıllara kadar özgür yazılım değildi.

bash'ın doğuşu

Unix için Taşınabilir İşletim Sistemi Arayüzü veya POSIX, yoğun özel csh uygulamalarına bir başka yanıttı. Komut yorumlama (diğer şeylerin yanı sıra) için başarılı bir standart oluşturdu ve sonunda KornShell'deki birçok özelliği yansıttı. Aynı zamanda, GNU Projesi ücretsiz, Unix uyumlu bir işletim sistemi yaratmaya çalışıyordu. GNU Projesi, özgür işletim sisteminin bir parçası olmak için bir özgür yazılım kabuğu geliştirdi ve buna “Bourne Again Shell” veya “bash” adını verdi.

Bash, 1989'daki ilk sürümünden bu yana geçen on yıllar içinde geliştirildi, ancak bugün hala çoğu Linux dağıtımında varsayılan kabuk. Aynı zamanda Apple'ın macOS'unda varsayılan kabuktur ve Microsoft'un Windows 10'unda kurulum için kullanılabilir.

Daha Yeni Kabuklar: kül, tire, zsh ve balık

Linux topluluğu, o zamandan beri Bash'e yerleşmiş olsa da, geliştiriciler, Bash 28 yıl önce ilk kez piyasaya sürüldüğünde yeni kabuklar oluşturmayı bırakmadılar.

Reklamcılık

Kenneth Almquist, Almquish kabuğu, A Shell, "kül" veya bazen sadece "sh" olarak bilinen bir Bourne kabuğu klonu yarattı. aynı zamanda POSIX uyumluydu ve Unix'in farklı bir dalı olan BSD'de varsayılan kabuk haline geldi. Kül kabuğu, bash'tan daha hafiftir, bu da onu gömülü Linux sistemlerinde popüler kılar. BusyBox'ın yüklü olduğu köklü bir Android telefonunuz veya BusyBox yazılım paketine sahip başka bir cihazınız varsa, bu, külden gelen kodu kullanıyordur.

Debian, küle dayalı bir kabuk ortamı geliştirdi ve buna “tire” adını verdi. POSIX uyumlu ve hafif olacak şekilde tasarlanmıştır, bu nedenle Bash'ten daha hızlıdır, ancak tüm özelliklerine sahip olmayacaktır. Ubuntu, etkileşimli olmayan görevler için varsayılan kabuğu olarak çizgi kabuğunu kullanır, kabuk komut dosyalarını ve arka planda çalışan diğer görevleri hızlandırır. Ubuntu, etkileşimli kabuklar için hala bash kullanıyor, bu nedenle kullanıcılar hala tam özellikli etkileşimli ortama sahipler.

En popüler yeni mermilerden biri Z kabuğu veya “zsh”. 1990'da Paul Falstad tarafından oluşturulan zsh, bash'ta bulacağınız özelliklerin yanı sıra daha fazlasını içeren Bourne tarzı bir kabuktur. Örneğin, zsh'de yazım denetimi, oturum açma/çıkışları izleme yeteneği, bayt kodu gibi bazı yerleşik programlama özellikleri, sözdiziminde bilimsel gösterim desteği, kayan nokta aritmetiğine olanak tanır ve daha fazla özellik bulunur.

Daha yeni bir kabuk, 2005'te piyasaya sürülen Friendly Interactive Shell veya “fish”tir. Öğrenmesi biraz daha kolay olacak şekilde tasarlanmış, ancak Bourne kabuğundan veya C kabuğundan türetilmemiş benzersiz bir komut satırı sözdizimine sahiptir. Bu ilginç bir fikir, ancak balık kullanarak öğrendikleriniz, bash ve Bourne'dan türetilen diğer kabukları kullanmanıza mutlaka yardımcı olmaz.

Hangisini Seçmelisiniz? (ve Zsh Neden Popüler?)

Bir kabuk seçmenize gerek yok. İşletim sisteminiz sizin için varsayılan kabuğunuzu seçer ve bu seçim neredeyse her zaman bash olur. Bir Linux dağıtımının veya hatta bir Mac'in önüne oturun ve neredeyse her zaman bir bash kabuğu ortamına sahip olacaksınız. Bash'in birkaç gelişmiş özelliği vardır, ancak muhtemelen kabuk komut dosyalarını programlamadığınız sürece bunları kullanmayacaksınız.

Gömülü Linux sistemlerinde veya BSD sistemlerinde, kül kabuğuna sahip olacaksınız. Ancak kül, Bourne tabanlı bir kabuktur ve büyük ölçüde bash ile uyumludur. Bazı gelişmiş komut dosyası oluşturma özellikleri bu hafif kabukta mevcut olmasa da, bash kullanımıyla ilgili edindiğiniz tüm bilgiler bir kül veya tire kabuğu kullanımına aktarılacaktır.

Reklamcılık

Karşılaşacağınız hemen hemen her kabuk Bourne tabanlıdır ve benzer şekilde çalışır - zsh dahil.

Bu yüzden zsh popülerdir. Bu daha yeni kabuk, bash ile uyumludur, ancak daha fazla özellik içerir. zsh kabuğu, yerleşik yazım düzeltmesi, geliştirilmiş komut satırı tamamlama, kabuğunuz için eklentiler olarak işlev gören yüklenebilir modüller, yalnızca komutlar yerine dosya adlarını veya komut satırında başka herhangi bir şeyi takmanıza olanak tanıyan genel takma adlar ve daha fazla tema desteği. Bash gibidir, ancak komut satırında çok fazla zaman harcarsanız takdir edebileceğiniz birçok ekstra, ek özellik ve yapılandırılabilir seçenek vardır.

Bash'e aşinaysanız, farklı bir sözdizimi öğrenmeden zsh'ye geçebilirsiniz; yalnızca ek özellikler kazanacaksınız. zsh hakkında bilginiz varsa, farklı bir sözdizimi öğrenmeden bash'a geçebilirsiniz; yalnızca bu özelliklere erişiminiz olmayacaktır.

"Oh My ZSH", zsh eklentilerini daha kolay etkinleştirmenize ve önceden hazırlanmış temalar arasında geçiş yapmanıza yardımcı olan bir araçtır, saatlerce ince ayar yapmak zorunda kalmadan zsh kabuğunuzu hızla özelleştirin.

Başka kabuklar da var. Örneğin, tcsh kabuğu hala etrafta ve hala bir seçenek. FreeBSD, varsayılan kök kabuğu olarak tsch'i ve varsayılan etkileşimli kabuğu olarak külü kullanır. C programlamayı düzenli olarak kullanıyorsanız, tsch sizin için daha uygun olabilir. Ancak, bash veya zsh kadar yaygın olarak kullanılan hiçbir yere yakın değildir.

Kabuklar Arasında Nasıl Geçiş Yapılır?

Denemek için yeni bir kabuğa geçmek kolaydır. Sadece Linux dağıtımınızın paket yöneticisinden kabuğu kurun ve kabuğu başlatmak için komutu yazın.

Reklamcılık

Örneğin, Ubuntu üzerinde zsh denemek istediğinizi varsayalım. Yüklemek ve ardından başlatmak için aşağıdaki komutları çalıştırırsınız:

 sudo apt yükleme zsh

zsh

O zaman bir zsh kabuğunda oturuyor olurdunuz. Kabuktan çıkmak ve mevcut kabuğunuza geri dönmek için kabuğa " exit " yazın.

Bu sadece geçici. Yeni bir terminal penceresi açtığınızda veya komut satırından sisteminizde oturum açtığınızda, varsayılan kabuğunuzu göreceksiniz. Oturum açtığınızda gördüğünüz kabuğu (oturum açma kabuğunuz olarak bilinir) değiştirmek için genellikle chsh veya "Kabuğu Değiştir" komutunu kullanabilirsiniz.

Bu komutu kullanmak için önce hangi komutu kullanarak kabuğunuzun tam yolunu bulmanız gerekir. Örneğin, zsh kabuğuna geçmek istediğimizi varsayalım. Aşağıdaki komutu çalıştırırdık:

 hangi zsh

Ubuntu'da bu bize zsh ikili dosyasının /usr/bin/zsh konumunda depolandığını söyler.

Aşağıdaki komutu çalıştırın, şifrenizi girin ve sizden yeni bir oturum açma kabuğu seçmeniz istenecektir:

 chsh
Reklamcılık

Yukarıdaki komuta göre, /usr/bin/zsh . zsh kabuğu, biz chsh komutunu çalıştırıp onu geri değiştirene kadar varsayılanımız olacaktır.