“Kabuk” ve “Bash” terimleri arasındaki fark nedir?


11

"Shell" ve "Bash" arasındaki fark nedir ve bu terimler ne anlama geliyor?

Bildiğim kadarıyla hiçbir fark yok. Ama "Shell" ve "Bash" hakkında birçok kitap gördüm!

Bu yüzden Mac OS X'teki Terminal ile çalışmak ve bazı bash senaryoları yazmak istersem, ne tür kitapları seçmem gerektiğini merak ediyorum.


7
Sınıf ve örnek ayrımına karşılık gelir.
Kaz


1
ilk mermi Bourne adında bir adam tarafından yazıldı. BASH, 'Boune Again Shell'in kısaltmasıdır. Eğlenmek önemlidir!
Kinjal Dixit

Yanıtlar:


31

" Kabuk ", bir işletim sistemine arabirim sağlayan herhangi bir yazılımdır. Örneğin, explorer.exe Windows'ta varsayılan kabuktur ( alternatifler olsa da ) ve OS X Finder'da aynı işlevin çoğunu sağlar. Linux / * nix'te, kabuk masaüstü ortamının bir parçası olabilir ( Gnome veya KDE gibi ) veya üstünde oturan ayrı bir yazılım bileşeni olabilir ( Unity veya Cinnamon gibi ).

Yukarıdaki örneklerin tümü, fare imleci kullanılarak etkileşime girebilen bir grafik kullanıcı arabirimi (GUI) sağlamak için pencerelerin, menülerin, simgelerin ve diğer benzeri öğelerin bir kombinasyonunu kullanan grafik kabuklardır. Bununla birlikte, Bash gibi yazılımlar veya betik yazma bağlamında, "kabuk" genellikle tamamen metin tabanlı olmak dışında, grafik kabuğuyla büyük ölçüde aynı görevleri yerine getiren bir komut satırı yorumlayıcısı anlamına gelir.

Bash , komut satırı kabuğunun belirli bir örneğidir ve muhtemelen en iyi bilinenlerden biridir ve birçok Linux dağıtımında ve OS X'te varsayılan olarak bulunur. Bourne kabuğunun yerini alacak şekilde tasarlanmıştır (Bash standları "Bourne again shell" için), ilk Unix mermilerinden biri .

Windows'taki komut satırı kabuklarına örnek olarak cmd.exe (diğer adıyla Komut İstemi) ve PowerShell verilebilir .


3
Finder genellikle OS X'te kabuk olarak adlandırılmaz. GUI ve pencere yönetimi özelliklerinin çoğu diğer işlemler tarafından yönetilir.
Lri

1
@LauriRanta Wikipedia aynı fikirde değil . Diğer işlemlerden yardım alıp almadığına bakılmaksızın, görevi kullanıcının bir GUI aracılığıyla temel işletim sistemi ile etkileşime girmesini sağlamak ve böylece bir grafik kabuğun açıklamasına uymaktır.
Indrek

1
Grafik kabuk terimi dosya yönetimi uygulamaları için de geçerli olabilir. Ancak genellikle OS X'te kullanılmaz ve Finder, Windows kabuğundan veya Birlikten daha çok Nautilus'a benzer.
Lri

6
@LauriRanta: Hızlı test, Nautilus'un simgesi nedir?
Yalan Ryan

2
@LauriRanta Dock bir mermi için daha iyi bir aday olmaz mıydı? Programları başlatmak ve belgeleri açmak, Expose / Spaces / Mission Control, AFAIK Launchpad ve görev değiştirici tüm Dock özellikleridir.
Daniel Beck

13

Bash birkaç mermiden biridir.

Unix veya Unix benzeri bir sistemde OSX veya Linux gibi bir kabuk, işletim sistemine komut satırı arabirimi sağlayan, komut yazmanıza ve çalıştırmanıza izin veren bir uygulama programıdır. Aralarından seçim yapabileceğiniz birkaç farklı kabuk vardır, ancak hepsi dosya adı joker karakteri, boru, burada belgeler, komut ikamesi, değişkenler ve durum testi ve yineleme için kontrol yapıları sağlar.

Orijinal Unix kabuğu, Bourne kabuğu , sh, Stephen Bourne tarafından Bell Labs'da yazılmıştır. Daha sonra Bill Joy tarafından Berkeley'de yazılan C mermisi , tcsh olarak güncellendi . Diğer kabukları dahil Korn kabuğunu , ksh David Korn tarafından yazılmış, ayrıca Bell Laboratuarlarında ve bash sh için ücretsiz bir yedek olarak, GNU projesi için Brian Fox tarafından yazılan "The Bourne again shell".

Bugün, bash muhtemelen en popüler Unix kabuğudur, ancak bir çok insan (ben dahil) hala daha güzel sözdizimine dayanan (bazılarımıza ne gibi görünüyor) C kabuğunu tercih ediyor. Temel olarak, bu bir zevk meselesi, bu yüzden başlamanıza yardımcı olmak için bağladığım Wikipedia makalelerini okumanızı tavsiye ederim.


2
Kabuklar komut satırı tabanlı olmak zorunda değildir, Nautilus, Windows Explorer, Finder, vb. Gibi birçok grafik kabuk da vardır. kabuklar, kaynakların (örn. dosya yönetimi) ve süreçlerin yönetimini sağlar.
Yalan Ryan

1
@LieRyan bunlar kabuk değil, dosya yöneticisidir. Kabuklar, tümleşik komut / komut dosyası yorumlayıcılarının içinde çalışmasına izin verir. Cevabımı gör. Bir programı bir dosya yöneticisinden çalıştırabilmek bir kabuk oluşturmaz.
Bill Rosmus

@BillR: Gnome Shell adamlarını tanımınız hakkında bilgilendirmelisiniz.
paradroid

2
Lie Ryan ve paradroid ile hemfikirim, grafik mermilerin artık mermi olduğu düşünülüyor. Komut satırı paradigmasına herkes kadar yatırım yaptım ve 90'larda grafik kabukları kabuk olarak kabul etmeye direndim. Ancak, tüm kontrol paneli widget'ları ve modern bir grafik kabuğunda olmayan şeylerle, artık ortak kullanımın kabuklara çağırmak olduğuna ve bu kullanımın doğru olduğuna katılıyorum. Temel OS'nin etrafında nispeten ince bir kullanıcı arayüzü katmanı olan bir kabuğun tanımıyla eşleşirler. Grafik kabuklar, herhangi bir kişinin nasıl komut yazacağı konusunda zayıftır, ancak birçok kullanıcı bunu umursamaz.
Nicole Hamilton

6

'Kabuk' terimi iyi adlandırılmıştır. Kelimenin tam anlamıyla kullanıcının bilgisayarla etkileşime girmesini sağlayan O / S'nin etrafında bir kabuktur. Başlangıçta tasarlandığında, grafiksel kullanıcı arayüzleri varsa çok az şey vardı (penceresiz :(). Her şey komut satırında yapıldı. Ama komut satırının bile yaşamak için bir yere ihtiyacı vardı. .

Basit bir ifadeyle, komut satırının yararlı olması için arayabileceği talimatlara ihtiyacı vardı. Böylece komut satırının kullanması için kabuk içinde programlar çalıştırıldı. Programlar kendi paketlerinde sıkı bir şekilde gruplandırılmış ve birlikte çalışması amaçlanmıştır. Bunlar "ls" ve "grep", "ps", "sed" vb. Programları içerir. Ayrıca, ">" ve "<" ve kanallar ("|") gibi dosya yönlendirme komutlarını da içerirler. Daha da önemlisi, koşullu işlemler gibi programlama yapılarını da içerir (eğer öyleyse, başka, döngüler için, döngüler için, bir deyim çalıştırdığınızda döndürülen durumu kontrol etme yolları (örneğin "ls" çalıştırırsanız bir şey buldunuz mu?), Şey bunun gibi). Bunlar daha karmaşık komut satırı (kabuk) komut dosyalarının temelleridir,

Birisi 'Bash Shell' terimini kullandığında, O / S kabuğunda çalışan 'Bash' adlı bir komut satırı yorumlayıcısından bahsediyorlar. Bunun 'Bash Shell Interpreter' için kısa olduğunu düşünebilirsiniz. Bourne gibi başka tercümanlar da var (Bash 'yeni ve geliştirilmiş bir Bourne Kabuğu ve Bourne Again Shell'in kısaltmasıdır). Ayrıca C-Shell, K-Shell (karmaşık kabuk komut dosyaları yazan birçok kişi tarafından tercih edilir) ve diğer GNU varyantları da vardır. Yıllar içinde kabuk olarak kullandığınız belirli komut satırı yorumlayıcısına atıf yapmak alışılmış hale gelmiştir, çünkü biri diğeri olmadan kullanılamaz. Ama gerçek şu ki farklılar.

Neden gerçek kabuk olarak değil de komut satırı yorumlayıcıları olarak biliniyorlar: Kabukta yaşıyorlar ve tüm komutları bir programda çalışıyormuş gibi yorumluyorlar. Ve kabuk, doğru standartları karşıladığı sürece hangi tercümanı çalıştırdığınızı umursamıyor.

Ve neden tercüman olarak adlandırıldıklarına gelince, bunun nedeni gerçekten tercüman olmalarıdır. Bir komut dosyasını açıkça çalıştırmasanız bile (ve bir komut dosyası yalnızca oluşturduğunuz komutların bir metin dosyasıdır, böylece aynı komutları tekrar yazmanıza gerek kalmadan tekrar tekrar çalıştırabilirsiniz). Örneğin, mütevazi 'ls' komutunu ele alalım. Çalıştırdığınızda, dosyaların bir listesini döndürür. Ancak nasıl çalıştığı sorunuz için daha önemlidir: Sadece basit bir kapalı komut olarak görünen şeyi çalıştırsanız bile, aslında komut satırı yorumlayıcısı bağlamında çalışır. Yani, sanki daha büyük bir programın bir ifadesiymiş gibi çalışır. Gerçekte bir kabuk komut dosyası dosyasında bulunmadan bir kabuk komut dosyası komut dosyasındaymış gibi çalışır. Anonim bir kabuk komut dosyası olduğu gibi.

Komut satırında çalıştırdığınız herhangi bir şeyin ortak bir özelliği vardır (ister 'ls' gibi tek bir komut veya komutlar ve yineleyiciler ve koşullu ifadelerle dolu bir komut dosyası olsun): hepsi komut satırı yorumlayıcısı tarafından işlenir; Bash, C-Shell, K-Shell (AIX btw'de varsayılan) olsun.

Ne demek istediğimi görmek için bir dizin 'test' yapın:

mkdir test

Girin ve aşağıdaki komutları çalıştırın

grep hello * 

'Böyle bir dosya veya dizin yok' gibi bir tür yanıt alacaksınız. Şimdi komutu girin

echo $?

($? diyor, şifreli bilgisayar konuşmasında ne bulduğunu söyle.) Bir sayı döndürdüğünü görmelisin (olması gerekir) '2'. Bu, "böyle bir dosya veya dizin yok" anlamına gelen grep'in dönüş kodudur. Şimdi aşağıdakileri çalıştırın:

echo hello > hello.txt
grep hello *
echo $?

İlk grep komutundan döndürülen 'hello.txt' dosyasını göreceksiniz ve şimdi 'echo $?' '0' sayısını döndürmek, aslında bir şey bulduğunu gösterir.

Bu tek seferlik komutlar çalıştırılsa bile, komut satırı yorumlayıcısı daha büyük bir programın parçasıymış gibi davranır ve dönüş değerlerini izler. Bu yüzden grep komutunun sonunda * unutursanız, geri dönmez. İfadenin eksik olduğunu ve daha fazla girdi beklediğini biliyor. Sonuçta, komut satırında yazmak ve çalıştırmak için tamamen yasal olan bazı döngülerin sonuçlarını grep etmesini isteyebilirsiniz.

Alt satır, kabuk kabuğudur ve yorumlayıcı (kullandığınız kişinin adı ne olursa olsun, 'Bash', k-shell, vb.) Farklıdır. Ancak genellikle birbirlerinin yerine kullanılırlar, çünkü herhangi bir anda tamamen birbirine bağlanırlar.


2

Kabuk, metin tabanlı bir kullanıcı arabirimidir.

Bash bir kabuk türüdür.


2
"Test tabanlı kullanıcı arayüzü" nedir? Ayrıca cevabınızı biraz genişletmek de güzel olurdu. Diğer cevaplardan da görebileceğiniz gibi, her zaman daha fazla içerik vermeye yardımcı olur.
slhck

Üzgünüm. Metin tabanlı kullanıcı arayüzü. Buna nasıl açıklamamı istersiniz? Kabuk, işletim sistemi çekirdeğiyle etkileşim kurmanın komut satırı yoludur. Kabuk, komutlarınızı yorumlar ve bunları makineye aktarır, bu da daha sonra verdiğiniz komutla ilgili gerekli işlemleri gerçekleştirir mi? 500 sayfalık bir kılavuz olmadan, bu belirsiz soruya etkili bir şekilde cevap vermek zordur. Cevabın çabası sorunun çabasına uyar. Bu soru elmadan portakallara.
HayekSplosives

Eğer bir sorunun şimdi otomatik olarak çaba göstermediğini düşünüyorsanız, bu sorunun cevabına çaba harcamamanız gerekir. Cevabınız, diğerlerine kıyasla, biraz ayrıntıdan yoksundur. Tabii bunu eklemek size kalmış.
slhck

Kişisel sorumluluktaki düzeltmeyi ve dersi takdir ediyorum. Çaba göstermek istemeyenleri, yapanlardan koruduğunuz için teşekkür ederiz. Posteri ne kadar borçlu olduğumu unutarak tamamen çizgim bitti.
HayekSplosives


1

bash var olan birçok mermiden biridir.

Tüm mermilerin benzerlikleri ve farklılıkları vardır. Örneğin bash ile yazılmış bir komut dosyası başka bir kabukla (örneğin zsh ) tamamen veya büyük ölçüde uyumlu olabilir .

Aslında nedeniyle bashçok yaygındır, genellikle bir senaryo onunla uyumlu olduğunu ima edilmektedir.

Bir kitap satın almak istiyorsanız, kullanmak istediğiniz kabuk için özel olarak yazılmış bir kitap satın alın. Yine de para harcamadan önce farklılıklarını okumak iyi bir fikir olacaktır.

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.