Ek B. Bash ile Bourne Kabuğu Arasındaki Başlıca Farklar
Önceki GNU Bash Başvuru Kılavuzu Sonraki
Ek B. Bash ile Bourne Kabuğu Arasındaki Başlıca Farklar
İçindekiler
1. SVR4.2 Kabuğunun Oluşumsal Farkları
Bash, Bourne Kabuğu ile esasen aynı dil bilgisi, parametre ve değişken yorumlaması, yönlendirme ve tırnak içine alma özelliklerin sahiptir. Bash bu özelliklerin belirtimleri olarak POSIX 1003.2 standardını kullanır. Geleneksel Bourne kabuğu ile Bash arasında bazı farklar vardır; bu bölümde önemli farklara kısaca değinilecektir. Bu farkların bir kısmı önceki bölümlerde derinliğine açıklanmıştır. Bu bölümde SVR4.2 (tarihi Bourne kabuğunun son sürümü) içindeki sh sürümü ile karşılaştırma yapılmıştır.
  • POSIX belirtiminin geleneksel sh davranışından farkları olsa da, Bash POSIX uyumludur (Bash POSIX Kipi bölümüne bakınız).
  • Bash çok karakterli çağrı seçeneklerine sahiptir (Bash'in Çağrılması bölümüne bakınız).
  • Bash'de komut satırı düzenlemesi ve bind yerleşiği vardır (Komut Satırının Düzenlenmesi bölümüne bakınız).
  • Bash bir programlanabilir sözcük tamamlama mekanizması ile onu yönetmek için complete ve compgen yerleşiklerini içerir.
  • Bash komut geçmişi ile onu yönetmek için history ve fc yerleşiklerine sahiptir. Bash geçmiş listesi zaman damgası bilgisi sağlar ve değerini göstermek için HISTTIMEFORMAT değişkenini kullanır.
  • Bash csh tarzı geçmiş yorumlamasına sahiptir.
  • Bash tek boyutlu dizi değişkenlerine ve onları kullanacak uygun değişken atama sözdizimi ve değişken yorumlamasına sahiptir. Bash'in bazı yerleşiklerinin seçenekleri dizilerle çalışmak içindir. Ayrıca Bash'in yerleşik dizi değişkenleri de vardır.
  • Bash'de tek tırnak içine alınmış metinlerde ANSI-C tersbölü öncelemeli karakterleri yorumlayan $'...' tırnaklama sözdizimi desteği vardır.
  • Bash çift tırnak içine alınmış karakterlere yerele özel çeviri yapmak için $"..." tırnaklı sözdizimini destekler. -D, --dump-strings, ve --dump-po-strings komut satırı seçenekleri bir betik içindeki çevrilebilir dizgeleri listeler.
  • Bash bir boruhattının dönüş değerinin tersini alabilen bir ! anahtar sözcüğüne sahiptir. Bir sınama başarısız olduğunda bir if deyiminde işlem yaptırmak için faydalıdır. Bash, set yerleşiğinin -o pipefail seçeneği ile etkinleştirilen ve içindeki bir komutunun başarısızlığı halinde bir hata döndüren bir boruhattına sahiptir.
  • Bash time anahtar sözcüğü ve komut zamanlaması içerir. TIMEFORMAT değişkeni ile kontrol edilen zamanlama istatistikleri gösterir.
  • Bash, C dilindekine benzer
        for (( ifade1 ; ifade2 ; ifade3 ))
    
    aritmetik for komutu içerir.
  • Bash basit menülerin oluşturulmasına izin veren select birleşik komutuna sahiptir.
  • Bash kabuk sözdiziminde sınama yapmaya yarayan ve isteğe bağlı olarak düzenli ifade eşleşmesini de mümkün kılan [[ koşullu komutu için destek içerir.
  • Bash case ve [[ oluşumları için isteğe bağlı olarak harf büyüklüğüne duyarsız eşleşme sağlar.
  • Bash kaşlı ayraç yorumlaması ve yaklaşık yorumlaması içerir.
  • Bash komut takma adları ile alias ve unalias yerleşiklerini içerir.
  • Bash kabuk aritmetiği, (( birleşik komutu ve aritmetik yorumlamasına sahiptir.
  • Kabuğun ilk ortamında mevcut olan değişkenler ast süreçlere otomatik olarak aktarılır. Bourne kabuğu export komutu kullanılarak değişkenler imlenmedikçe normalde bunu yapmaz.
  • Bash isimli değişkenin sol taraf değerine ekleme yapan += atama işlecini destekler.
  • Bash POSIX kalıp yoketme, değişken değerlerinden baştaki ve sondaki altdizgeleri kaldıracak %, #, %% ve ## yorumlamaları içerir (Kabuk Parametrelerinin Yorumlaması bölümüne bakınız).
  • ${xx}'in uzunluğunu döndüren ${#xx} yorumlaması desteklenir (Kabuk Parametrelerinin Yorumlaması bölümüne bakınız).
  • konum dan başlayan uzunluk karakterlik parametre alt dizgesini yorumlayan ${parametre:konum[:uzunluk]}parametre yorumlaması vardır.
  • kalıp'ı eşleştirdikten sonra onu parametre nin değerindeki dizge ile değiştiren ${parametre/[/]kalıp[/dizge]}, parametre yorumlaması vardır.
  • İsimleri önek ile başlayan tüm kabuk değişkenlerinin isimleri olarak yorumlanan ${!önek}*parametre yorumlaması vardır.
  • Bash ${!sözcük} kullanarak dolaylıdeğişken yorumlamasına sahiptir.
  • Bash $9 dan büyük konumsal paramaetreleri ${sayı} kullanarak yorumlar.
  • POSIX $() biçemli komut ikamesi, Bourne kabuğunun `` komut ikamesine tercih edilmiştir. Ancak Bourne kabuğunun komut ikamesi de desteklenmektedir.
  • Bash süreç ikamesine sahiptir.
  • Bash o anki kullanıcı (UID, EUID ve GROUPS), o anki konak (HOSTTYPE, OSTYPE, MACHTYPE ve HOSTNAME) ve çalışan Bash kopyası (BASH, BASH_VERSION ve BASH_VERSINFO) hakkında bilgi sağlayan değişkenleri otomatik olarak atar.
  • IFS değişkeni tüm sözcüklerin değil sadece yorumlama sonuçlarını ayrımlamakta kullanılmıştır. Bu uzun zamandır süren bir güvenlik açığını kapatmıştır.
  • Bash POSIX 1003.2 dosyaismi yorumlama işleçlerinin tamamını destekler (karakter sınıfları, eşitlik sınıfları ve birleştirme sembolleri dahil).
  • Bash extglob kabuk seçeneği etkinken ek kalıp eşleşme işleçlerini kullanabilir (Kalıp Eşleme bölümüne bakınız).
  • Bir değişken ile bir işlev aynı isimde olabilir; sh bu iki isim alanını ayırmaz.
  • Bash işlevleri local yerleşiğini kullanarak yerel değişkenler kullanabilir. Böylece iç içe işlev çağrıları yazılabilmesi mümkündür.
  • Komutları önceleyen değişken atamaları sadece komutları, yerleşikleri ve işlevleri etkiler. sh'da komutları önceleyen tüm değişken atamaları komut dosya sisteminden çalıştırılmadıkça çağrıldığı ortamı da etkiler (Ortam bölümüne bakınız).
  • Bash girdi ve çıktı yönlendirme işleçlerine terim olarak belirtilen dosyaisimleri üstünde dosyaismi yorumlaması uygular.
  • Bash bir dosyayı hem okumak hem de yazmak için açan <> ve standart çıktı ile standart girdiyi aynı dosyaya yönlendiren yönlendirme işleçlerini içerir.
  • Bash bir dizgenin bir komutun standart girdisi olarak kullanılmasını mümkün kılan <<< yönlendirme işlecini içerir.
  • Bash bir dosya tanıtıcısını bir diğerine taşıyan [n]<&sözcük ve [n]>&sözcük yönlendirme işleçlerini içerir.
  • Bash yönlendirme işleçlerinde kullanıldığında dosyaisimlerini özel olarak ele alır.
  • Bash yönlendirme işleçleri ile isteğe bağlı olarak makinalara ve servislere ağ bağlantıları açabilir.
  • Bash'de çıktı yönlendirmesi ile mevcut dosyaların üzerine yazılmasını engelleyecek noclobber seçeneği vardır. >| yönlendirme işleci ile noclobber seçeneğinin engeli aşılabilir.
  • Bash cd ve pwd yerleşiklerinin herbiri -L ve -P seçenekleri ile mantıksal ve fiziksel kiplere geçebilir.
  • Bash bir yerleşikle aynı isimde işlevlere izin vererek işlev içinden yerleşiğin işlevselliğine builtin ve command yerleşikleri üzerinden erişilmesini sağlar.
  • command yerleşiği komut araması uygulanırken işlevlerin seçimli iptaline izin verir.
  • Yerleşikler enable yerleşiği kullanılarak tek tek etkinleştirilebilir ya da iptal edilebilir.
  • Bash exec yerleşiği, çalıştırılan komuta aktarılan ortamın içeriğinin ve komuta verilecek sıfırıncı argümanın ne olacağının kullanıcı tarafından kontrol edilmesini sağlayan ek seçeneklere sahiptir.
  • Kabuk işlevleriexport -f ile ortam üzerinden alt süreçlere aktarılabilir.
  • Bash export, readonly ve declare yerleşikleri kabuk işlevleri ile çalışan bir -f seçeneğine, bir kabuk girdisi olarak kullanılabilen bir biçemde atanan çeşitli isimlere sahip değişkenleri gösteren bir -p seçeneğine, çeşitli değişken isimlerini kaldıran bir -n seçeneğine ve değişken isimleri ile değerlerini aynı anda atayan isim=değer argümanlarına sahiptir.
  • Bash hash yerleşiği dosyaismi $PATH aramasında hash -p kullanılarak bulunamasa bile bir ismin bir keyfi dosyaismi ile ilişkilendirilmesine izin verir.
  • Bash kabuk yerleşikleri ve değişkenleri hakkında yardım almak için kullanılan bir help yerleşiğine sahiptir.
  • printf yerleşiği biçemli çıktıları göstermekte kullanılır.
  • Bash read yerleşiği \ ile biten bir satırı -r seçeneği ile okuyacak ve hiç seçenek olmayan argüman verilmezse öntanımlı olarak REPLY değişkenini kullanacaktır. Bash read yerleşiği ayrıca -p seçeneği ile bir komut istemi dizgesi kabul eder ve -e seçeneği verildiğinde satırı sağlamada Readline'ı kullanır. read yerleşiği bunlardan başka girdiyi kontrol etmek için ek seçeneklere sahiptir: -s seçeneği girdi karakterlerinin okunduğu gibi yansılanmasını engelleyecek, -t seçeneği ile belirtilen süre içinde bir girdi alınmazsa okumanın zamanaşımına girmesi sağlanacak, -n seçeneği satırın tamamı yerine sadece belirtilen sayıda karakterin okunmasına izin verecek ve -d seçeneği satırsonu yerine bir başka karaktere kadar okuyacaktır.
  • return yerleşiği . veya source yerleşikleri ile çalıştırılan betiklerin çıkmasını sağlamakta kullanılabilir.
  • Bash kabuğun istemlik yeteneklerini daha iyi kontrol etmek için ve bu seçeneklerin kabuk çağrısında atanmasını ve kaldırılmasını sağlayan shopt yerleşiğine sahiptir.
  • Bash set yerleşiği ile kontrol edilebilir çok sayıda istemlik davranışa sahiptir.
  • -x (xtrace) seçeneği bir çalışmanın izlenmesi sırasında basit komutlardan başka komutlar da gösterir.
  • test yerleşiği argümanlarıyla davranışı değiştirilebilen bir POSIX algoritması olarak biraz farklı gerçeklenmiştir.
  • Bash, etkin altyordam çağrısının (. veya source yerleşiği ile çalıştırılan bir kabuk işlevi ya da betiği) bağlamını gösteren caller yerleşiğini içerir. Bu, bash hata ayıklayıcısını da destekler.
  • trap yerleşiği EXIT'e benzer bir DEBUG sinyalimsi belirtimine izin verir. Bir DEBUG kapanı ile belirtilen komutlar her basit komuttan, for komutundan, case komutundan, select komutundan, her aritmetik for komutundan ve bir kabuk işlevinde çalıştırılacak ilk komuttan önce çalıştırılır. İşleve trace niteliği verilmiş olmadıkça ya da shopt yerleşiği kullanılarak functrace seçeneği etkinleştirilmiş olmadıkça DEBUG kapanı kabuk işlevleri tarafından miras alınmaz. extdebug kabuk seçeneğinin DEBUG kapanı üzerinde ek bir etkisi vardır.
  • trap yerleşiği EXIT ve DEBUG'a benzer bir ERR sinyalimsi belirtimine izin verir. Bir ERR kapanı ile belirtilen komutlar bir kaç durum dışında her başarısız basit komuttan sonra çalıştırılır. set yerleşinin -o errtrace seçeneği etkinleştirilmedikçe ERR kapanı kabuk işlevleri tarafından miras alınmaz.
    trap yerleşiği EXIT ve DEBUG'a benzer bir RETURN sinyalimsi belirtimine izin verir. Bir RETURN kapanı ile belirtilen komutlar . veya source ile çalıştırılan bir kabuk işlevi veya betiği döndükten sonra kaldığı yerden devam etmeden önce çalıştırılırlar. İşleve trace niteliği verilmiş olmadıkça ya da shopt yerleşiği kullanılarak functrace seçeneği etkinleştirilmiş olmadıkça RETURN kapanı kabuk işlevleri tarafından miras alınmaz.
  • Bash type yerleşiği daha yaygındır ve bulduğu isimler hakkında daha fazla bilgi verir.
  • Bash umask yerleşiği kendisine girdi olarak verilebilecek biçemde gösterilen bir çıktı veren bir -p seçeneğine sahiptir.
  • Bash bir csh benzeri dizin yığınına sahiptir ve onu yönetmek için pushd, popd ve dirs yerleşiklerini içerir. Bash ayrıca dizin yığınını DIRSTACK kabuk değişkeninin değerindeki gibi görünür yapabilir.
  • Bash etkileşimliyken komut isteminde özel tersbölü öncelemeli karakterleri yorumlar.
  • Bash sınırlı kipte çok kullanışlıdır; SVR4.2 kabuğu ise sınırlı kipte çok fazla sınırlıdır.
  • disown yerleşiği bir işi kabuğun dahili iş tablosundan kaldırabilir veya kabuk bir SIGHUP sinyalinin sonucu olarak çıkarken bir işe SIGHUP sinyalinin gönderilmesini engelleyebilir.
  • Bash, kabuk betikleri için ayrı bir hata ayıklayıcıyı destekleyecek bir miktar özellik içerir.
  • The SVR4.2 kabuğu ayrıcalıklarla ilgili mldmode ve priv diye Bash'de bulunmayan iki yerleşiğe sahiptir.
  • Bash stop ve newgrp yerleşiklerine sahip değildir.
  • Bash kabuk hesapları uygulamaz ve SHACCT değişkenini kullanmaz.
  • SVR4.2 shTIMEOUT değişkeni kullanırken Bash TMOUT değişkenini kullanır.
Bash'e özel diğer özellikler Bash'in Özellikleri bölümünde bulunabilir.
Önceki Üst Ana Başlık Sonraki
Ek A. Hataları Raporlama Başlangıç SVR4.2 Kabuğunun Oluşumsal Farkları
Bir Linux Kitaplığı Sayfası