22Jul

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

Çoğu Linux dağıtımı bash kabuğunu varsayılan olarak 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 tsh gibi diğer kabuklar da vardır. Ama neyin farkı var ve neden bu kadar çok insan var?

Kabuklar Ne Yapıyor?

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

İlk kabuk ortamı, Bell Labs tarafından geliştirilen ve 1971'de piyasaya sürülmüş olan Thompson Shell'dir. Kabuk ortamları, bu yana konsept üzerine inşa edilmiş ve çeşitli yeni özellikler, işlevler ve hızlı iyileştirmeler eklemiştir.

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

Kabuk aynı zamanda çeşitli sistem hizmetleri ile arka planda da kullanılmaktadır. Linux dağıtımı, kabuk komut dosyaları olarak yazılan birçok işlevi içerir. Bu komut dosyaları komutlardır ve kabuk ortamında çalışan diğer gelişmiş kabuk komut dosyası işlevleri.

Kabuklanmaya Kadar Kabuklar: sh, csh, tsh ve ksh

Modern kabukların en tanınmış öncüsü, "sh" olarak da bilinir - AT & T'nin Bell'de çalışan yaratıcısı Stephen Bourne'den almıştır. Labs.1979 yılında piyasaya sürülen Unix, komut yerine koyma, boru donanımı, değişkenler, durum testi ve döngü özelliklerini desteklemesi nedeniyle diğer özelliklerle birlikte varsayılan komut yorumlayıcı oldu. Kullanıcılar için pek fazla özelleştirme sunmadı ve takma adlar, komut tamamlama ve kabuk işlevleri gibi modern özelliklerini desteklemedi( ancak sonuncusu eklendi).

C kabuğu veya "csh", 1970'lerin sonunda Bill Joy tarafından University of California, Berkley tarafından geliştirildi. Kullanıcıların, takma adlar( uzun komutlar için kısayollar), iş yönetimi özellikleri, komut geçmişi ve daha fazlası gibi, kullanıcıların sistemlerini kontrol edebildiği çok sayıda etkileşimli öğe ekledi. Unix işletim sisteminin kendisi yazılmış olan C programlama dilinden modellendi. Bu aynı zamanda Bourne kabuğundaki kullanıcıların komutları girmeleri için C öğrenecekleri anlamına geldi. Buna ek olarak, csh'nin kullanıcılar ve yaratıcılar tarafından büyük bir zaman zarfında ele alınması gereken epeyce hatası vardı.İnsanlar, etkileşimli olmayan komutları daha iyi işlediği, ancak normal kullanım için C kabuğuyla sıkıştığı için komut dizileri için Bourne kabuğunu kullanmayı bıraktı.

Zamanla birçok kişi hataları düzeltti ve C kabuğuna özellikler ekledi ve csh'nin "tcsh" olarak bilinen daha gelişmiş bir sürümüyle sonuçlandı.Fakat Unix tabanlı bilgisayarlarda csh hala varsayılan ve bazı standart dışı özellikler eklemişti. Bell Labs'tan David Korn, Bourne kabuğunun dili ile geriye dönük uyumlu ancak csh kabuğundan birçok özellik ekleyerek durumu iyileştirmeye çalışan KornShell veya "ksh" üzerinde çalıştı.1983 yılında serbest bırakıldı, ancak tescilli bir lisans altında.Çeşitli açık kaynaklı lisanslar altında serbest bırakılan 2000'li yıllara kadar özgür yazılım değildi.

Bash

'nin Doğuşu Unix veya POSIX için Taşınabilir İşletim Sistemi Arayüzü, telaşlı tescilli csh uygulamalarına bir diğer yanıttı.Komut yorumunda( diğer şeylerin yanı sıra) bir standart oluşturdu ve sonunda KornShell'deki birçok özelliği yansıtıyordu. Aynı zamanda, GNU Projesi, özgür, Unix uyumlu bir işletim sistemi yaratmaya çalışıyordu. GNU Projesi, özgür işletim sisteminin bir parçası olmak için ücretsiz bir yazılım kabuğu geliştirdi ve "Bourne Again Shell" veya "bash" olarak adlandırdı.

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

Daha Yeni Kabuklar: ash, dash, zsh ve balık

Linux topluluğu Bash'ı o günden beri yerleşik hale getirirken geliştiriciler durmadıBash ilk kez 28 yıl önce serbest bırakıldığında yeni kabuklar yarattı.

Kenneth Almquist, Almquish shell, A Shell, "kül" ya da bazen sadece "sh" olarak bilinen bir Bourne kabuğu klonu yarattı.POSIX uyumludur ve Unix'in farklı bir dalı olan BSD'deki varsayılan kabuk haline gelmiştir. Kül kabuğu, gömülü Linux sistemlerinde popüler hale getiren bash'dan daha hafif. BusyBox kurulu köklü bir Android telefonunuz varsa veya BusyBox yazılım paketiyle birlikte başka herhangi bir cihaz varsa, kül kaynak kodunu kullanıyor demektir.

Debian, kül temelli bir kabuk ortamı geliştirdi ve "çizgi" olarak adlandırdı.POSIX uyumlu ve hafif olacak şekilde tasarlandığından Bash'den 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, böylece kabuk komut dosyalarını ve arka planda çalışan diğer görevleri hızlandırabilir. Ancak Ubuntu etkileşimli kabuklar için hala bash kullanıyor, bu nedenle kullanıcılar hala tam özellikli etkileşimli ortamlara sahipler.

En popüler yeni kabuklardan biri Z kabuğu veya "zsh" dir.1990'da Paul Falstad tarafından hazırlanan zsh, bash'da bulacağınız özellikleri içeren bir Bourne tarzı kabuk ve daha da fazlasıdır.Örneğin, zsh yazım denetimi, oturum açma / oturumları izlemek için yeteneği, bayt kodu gibi bazı yerleşik programlama özellikleri, sözdiziminde bilimsel gösterim desteği, kayan nokta aritmetiği ve daha fazla özellik sağlar.

Başka bir yeni kabuk Dost Etkileşimli Kabuk veya 2005'de yayımlanan "balık" dır. Öğrenmesi biraz daha kolay olacak şekilde tasarlanmış benzersiz bir komut satırı sözdizimine sahiptir, ancak Bourne kabuğundan veya C kabuğundan türetilmemiştir..Bu ilginç bir fikir, ancak balık kullanarak öğrenmiş olduğunuz şey bash ve diğer Bourne türevi kabukları kullanmanıza da yardımcı olmayacaktır.

Hangisini Seçmelisin?(ve neden Zsh popülerdir)

Kabuk seçmenize gerek yoktur.İşletim sisteminiz varsayılan kabuğunuzu sizin için seçer ve bu seçim hemen hemen her zaman bash olur. Bir Linux dağıtımının( hatta bir Mac'in) önünde oturun ve neredeyse her zaman bir bash shell ortamına sahip olursunuz. Bash'in pek çok gelişmiş özelliği var, ancak kabuk komut dosyalarını programlamadığınız sürece bunları kullanmayacaksınız.

Gömülü Linux sistemlerinde veya BSD sistemlerinde, kül kabuğu ile sonuçlanacaksınız. Ancak kül Bourne tabanlı bir kabuktur ve bash ile büyük ölçüde uyumludur. Bash kullanarak elde ettiğiniz her bilgi bir kül veya çizgi kabuğunu kullanmaya aktarılır; ancak bu hafif kabukta bazı gelişmiş betikleme özellikleri yoktur.

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

Bu yüzden zsh popüler. Bu yeni kabuk bash ile uyumludur, ancak daha fazla özellik içermektedir. Zsh kabuğu, yerleşik yazım denetimi düzeltmesi, geliştirilmiş komut satırı tamamlama, kabuğunuz için eklentiler gibi görev yapabilen yüklenebilir modüller, sadece komutlar yerine komut satırında dosya adlarını veya başka bir şeyi taklit etmenizi sağlayan genel takma adlar vedaha fazla tematik destek. Bash'a benziyor, ancak komut satırında çok fazla zaman harcarsanız değerlendirebileceğiniz bir çok ekstralar, ek özellikler ve yapılandırılabilir seçenekler var.

Bash'ı biliyorsanız, farklı bir sözdizimi öğrenmeden zsh'ye geçebilirsiniz - yalnızca ek özellikler kazanırsınız.zsh ile aşina iseniz, farklı bir sözdizimi öğrenmeden bash'a geçebilirsiniz - yalnızca bu özelliklere erişemezsiniz.

"Oh My ZSH", zsh eklentilerini daha kolay bir şekilde etkinleştirmenize ve önceden hazırlanmış temalar arasında geçiş yapmanıza yardımcı olan, saat yönünü değiştirmeden zsh kabuğunuzu hızla özelleştiren bir araçtır.

Başka kabuklar da var.Örneğin, tcsh kabuğu halen bir seçenek ve hala bir seçenek. FreeBSD varsayılan kök kabuğu olarak tsch ve varsayılan etkileşimli kabuk olarak kül değerini kullanır. C programlamayı düzenli olarak kullanırsanız, tsch sizin için daha uygun olabilir. Bununla birlikte, bash veya zsh olarak yaygın olarak kullanılan hiçbir yerde yoktur.

Kabuklar Arasında Geçiş Yapma

Denemek için yeni bir kabuk değiştirmek kolaydır. Kabukları Linux dağıtımınızın paket yöneticinizden yükleyin ve kabuğu başlatmak için komutu yazın.

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

sudo apt install zsh zsh

Sonra bir zsh kabuğunda otururdunuz. Kabukta "exit" yazıp bırakın ve geçerli kabuğunuza dönün.

Bu sadece geçicidir. Yeni bir terminal penceresi açtığınızda veya sisteminizde komut satırında oturum açtığınızda varsayılan kabuğunuzu görürsünüz. Giriş yaptığınızda gördüğünüz kabuğu değiştirmek için( giriş kabuğunuz) genellikle chsh veya "Kabuğu Değiştir" komutunu kullanabilirsiniz.

Bu komutu kullanmak için öncelikle hangi komutu kullanarak kabuğunuzun tam yolunu bulmanız gerekir.Örneğin, diyelim ki zsh kabuğuna geçmek istedik. Aşağıdaki komutu çalıştırırız:

, zsh

Ubuntu'da, zsh ikili dosyasının /usr/bin/ zsh'da saklandığını söyler.

Aşağıdaki komutu çalıştırın, parolanızı girin ve yeni bir giriş kabuğu seçmeniz istenir:

chsh

Yukarıdaki komuta göre /usr/bin/ zsh yazar. Daha sonra, chsh komutu çalıştırılıncaya ve geri değiştirene kadar zsh kabuğu varsayımımız olurdu.