Bash - Linux Komutu - Unix Komutu

ADI

bash - GNU Bourne-Again

ÖZET

bash [seçenekler] [dosya]

AÇIKLAMA

Bash , standart girdiden veya bir dosyadan okunan komutları çalıştıran bir sh- uyumlu komut dili yorumlayıcısıdır. Bash ayrıca Korn ve C kabuklarından ( ksh ve csh ) kullanışlı özellikler içerir.

Bash , IEEE POSIX Shell ve Araçlar spesifikasyonunun (IEEE Çalışma Grubu 1003.2) uyumlu bir uygulaması olarak tasarlanmıştır.

SEÇENEKLER

Set yerleşik komutunun açıklamasında belgelenen tek karakterlik kabuk seçeneklerine ek olarak, bash , çağrıldığında aşağıdaki seçenekleri de yorumlar:

-c dizesi

-c seçeneği varsa, komutlar dizeden okunur. Dizeden sonra argümanlar varsa, 0 $ ile başlayan konumsal parametrelere atanırlar.

-ben

-i seçeneği varsa, kabuk etkileşimlidir .

-l

Bash , oturum açma kabuğu olarak çağrılmış gibi davranın (bkz. Aşağıdaki INVOCATION ).

-r

-r seçeneği mevcutsa, kabuk kısıtlanır (aşağıdaki KISITLANMIŞ SHELL'e bakın).

-s

-s seçeneği varsa veya seçenek işlemeden sonra hiçbir argüman kalmıyorsa, komutlar standart girişten okunur. Bu seçenek, etkileşimli bir kabuk çağırırken konumsal parametrelerin ayarlanmasına izin verir.

-D

Önceden $ olarak yazılan tüm çift tırnaklı dizgelerin bir listesi standart çıkışa yazdırılır. Bunlar, geçerli yerel ayar C veya POSIX olmadığında, dil çevirisine tabi olan dizelerdir. Bu, -n seçeneğini işaret eder; hiçbir komut yürütülmez.

[- +] O [ shopt_option ]

shopt_option shopt yerleşiği tarafından kabul edilen kabuk seçeneklerinden biridir (bkz. aşağıda SHELL BUILTIN COMMANDS ). Shopt_option varsa, -O bu seçeneğin değerini ayarlar; + O bunu anlamıyor. Shopt_option verilmezse, shopt tarafından kabul edilen kabuk seçeneklerinin adları ve değerleri standart çıktıya yazdırılır. Çağırma seçeneği + O ise, çıktı giriş olarak yeniden kullanılabilen bir biçimde görüntülenir.

-

A - seçeneklerin sonunu bildirir ve daha fazla seçenek işlemeyi devre dışı bırakır. Bundan sonraki herhangi bir argüman, dosya isimleri ve argümanlar olarak kabul edilir. Bir argüman - - ile eşdeğerdir.

Bash ayrıca bir dizi çok karakterli seçeneği de yorumlar. Bu seçenekler, tanınacak tek karakter seçeneklerinden önce komut satırında görünmelidir.

--dump-po-dizeleri

-D'ye eşdeğer, ancak çıktı GNU gettext po (taşınabilir nesne) dosya biçimindedir.

--dump-dizeleri

-D'ye eşdeğerdir.

--yardım et

Standart çıkışta bir kullanım mesajı görüntüleyin ve başarıyla çıkın.

--init dosyası

--rcfile dosyası

Kabuk etkileşimli ise, standart kişisel başlatma dosyası ~ / .bashrc yerine dosyadan komutlar yürütün (aşağıdaki INVOCATION bölümüne bakın).

--oturum aç

-L ile eşdeğerdir

--noediting

Kabuk etkileşimli olduğunda komut satırlarını okumak için GNU readline kütüphanesini kullanmayın.

--profil yok

Sistem genelindeki başlatma dosyasını / etc / profile veya kişisel başlatma dosyalarından herhangi birini ~ / .bash_profile , ~ / .bash_login veya ~ / .profile öğelerini okuma . Varsayılan olarak, bash , bu dosyaları oturum açma kabuğu olarak çağrıldığında okur (aşağıdaki INVOCATION bölümüne bakın).

--norc

Kabuk etkileşimli ise kişisel başlatma dosyasını ~ / .bashrc okuma ve yürütme. Kabuk, sh olarak çağrıldığında bu seçenek varsayılan olarak açıktır.

--posix

Varsayılan işlemin standart ( posix modu ) ile eşleşmesi için POSIX 1003.2 standardından farklı olduğu, bash'ın davranışını değiştirin.

--kısıtlı

Kabuk sınırlandırılmıştır (aşağıdaki KISITLI KABİNE bakınız).

--rpm-gerektirir

Kabuk betiğinin çalışması için gerekli olan dosyaların listesini üretin. Bu '-n' anlamına gelir ve derleme zamanı hatası denetimi denetimi ile aynı sınırlamalara tabidir; Backticks, [] testleri ve değerlendirmeler ayrıştırılmadığından bazı bağımlılıklar gözden kaçırılabilir. --verbose -v . ile eşdeğerdir

version

Standart çıktıdaki bu bash örneğinin sürüm bilgilerini göster ve başarıyla çık.

ARGÜMANLAR

Seçenek işlemeden sonra argümanlar kalırsa ve ne -c ne de -s seçeneği sağlanmışsa, ilk argümanın kabuk komutlarını içeren bir dosyanın adı olduğu varsayılır. Bash bu şekilde çağrılırsa, $ 0 dosya adına ayarlanır ve konumsal parametreler kalan argümanlara ayarlanır. Bash , bu dosyadan komutları okur ve çalıştırır, sonra çıkar. Bash çıkış durumu, komut dosyasında yürütülen son komutun çıkış durumudur. Hiçbir komut yürütülmezse, çıkış durumu 0'dır. Dosyayı geçerli dizinde açmak için bir girişimde bulunulur ve herhangi bir dosya bulunamazsa, kabuk komut dizisi için PATH içindeki dizinleri arar.

yakarma

Oturum açma kabuğu , argümanının sıfırının ilk karakteri a - , veya --login seçeneğiyle başlayan bir karakterdir.

Etkileşimli olmayan bir kabuk, opsiyonel olmayan argümanlar olmadan ve standart giriş ve çıkış her ikisi de terminallere ( isatty (3) ile belirlendiği gibi) veya -i seçeneğiyle başlatılan -c seçeneğiyle başlatılır. PS1 ayarlanır ve $ - bash etkileşimli ise, bu durumu test etmek için bir kabuk komut dosyasına veya bir başlangıç ​​dosyasına izin verir.

Aşağıdaki paragraflar, bash'ın başlangıç ​​dosyalarını nasıl yürüttüğünü açıklar. Dosyalardan herhangi biri var, ancak okunamıyorsa, bash bir hata bildirir. Tildeler, EXPANSION bölümünde Tilde Expansion altında açıklandığı gibi dosya adlarında genişletilir.

Bash , interaktif bir giriş kabuğu olarak veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında, ilk önce bu dosya varsa, / etc / profile komutlarını okur ve çalıştırır. Bu dosyayı okuduktan sonra, o sırayla ~ / .bash_profile , ~ / .bash_login ve ~ / .profile ifadelerini arar ve var olan ve okunabilen ilk komuttan komutları okur ve çalıştırır. Kabuk bu davranışı engellemeye başladığında --noprofile seçeneği kullanılabilir.

Bir giriş kabuğu çıktığında, bash , varsa ~ / .bash_logout dosyasındaki komutları okur ve çalıştırır.

Giriş kabuğu olmayan etkileşimli bir kabuk başlatıldığında, bash , bu dosya varsa ~ / .bashrc komutlarını okur ve çalıştırır. Bu --norc seçeneği kullanılarak engellenebilir. --rcfile dosya seçeneği, ~ / .bashrc yerine dosyadan komutları okumak ve çalıştırmak için bash'ı zorlayacaktır.

Bash etkileşimli olmayan bir şekilde başlatıldığında, bir kabuk betiğini çalıştırmak için, örneğin, ortamdaki BASH_ENV değişkenini arar, orada görünürse değerini genişletir ve genişletilmiş değeri okumak ve yürütmek için bir dosyanın adı olarak kullanır. . Bash , aşağıdaki komut yürütüldüğü gibi davranır:

eğer [-n "$ BASH_ENV"]; sonra . "$ BASH_ENV"; fi

ancak PATH değişkeninin değeri dosya adını aramak için kullanılmaz.

Bash , sh ismiyle çağrılırsa, POSIX standardına uygun olurken, sh'in tarihsel sürümlerinin başlangıç ​​davranışını mümkün olduğunca yakından taklit etmeye çalışır. Etkileşimli oturum açma kabuğu veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında, ilk önce / etc / profile ve ~ / .profile komutlarını bu sırayla okumaya ve yürütmeye çalışır. Bu davranışı engellemek için --noprofile seçeneği kullanılabilir. Sh adıyla etkileşimli bir kabuk olarak çağrıldığında, bash , ENV değişkenini arar, tanımlanmışsa değerini genişletir ve genişletilmiş değeri okumak ve yürütmek için bir dosyanın adı olarak kullanır. Sh olarak çağrılan bir kabuk, diğer başlangıç ​​dosyalarından komutları okumaya ve yürütmeye çalışmadığından, --rcfile seçeneğinin bir etkisi yoktur. Sh adıyla çağrılan etkileşimli olmayan bir kabuk, başka başlangıç ​​dosyalarını okumaya çalışmaz. Sh olarak çağrıldığında, başlatma dosyaları okunduktan sonra bash posix moduna girer.

Bash , --posix komut satırı seçeneğinde olduğu gibi, posix modunda başlatıldığında, başlangıç ​​dosyaları için POSIX standardını izler. Bu modda, etkileşimli kabuklar ENV değişkenini genişletir ve komutlar, adı genişletilmiş değer olan dosyadan okunur ve yürütülür. Başka başlangıç ​​dosyaları okunmuyor.

Bash , genellikle rshd , uzak kabuk daemon tarafından çalıştırıldığını belirlemek için çalışır. Eğer bash , rshd tarafından çalıştırıldığını belirlerse, bu dosya varsa ve okunabilirse, ~ / .bashrc komutlarını okur ve çalıştırır. Sh olarak çağrılırsa bunu yapmayacaktır. --norc seçeneği bu davranışı engellemek için kullanılabilir ve --rcfile seçeneği okunacak başka bir dosyayı zorlamak için kullanılabilir, ancak rshd genellikle kabuğu bu seçeneklerle çağırmaz veya belirtilmesine izin vermez.

Kabuk, gerçek kullanıcı (grup) kimliğine eşit olmayan etkin kullanıcı (grup) kimliği ile başlatılırsa ve -p seçeneği sağlanmazsa, başlangıç ​​dosyaları okunmaz, kabuk işlevleri çevreden miras alınmaz , SHELLOPTS değişken, ortam içinde görünürse yoksayılır ve etkin kullanıcı kimliği gerçek kullanıcı kimliğine ayarlanır. -p seçeneği çağırma sırasında sağlanırsa, başlatma davranışı aynıdır, ancak etkili kullanıcı kimliği sıfırlanmaz.

TANIMLAR

Aşağıdaki tanımlar bu belgenin geri kalanında kullanılır.

boş

Bir boşluk veya sekme.

sözcük

Kabuk tarafından tek bir birim olarak kabul edilen karakter dizisi. Bir jeton olarak da bilinir.

isim

Yalnızca alfasayısal karakterler ve alt çizgilerden oluşan ve bir alfabetik karakter veya alt çizgi ile başlayan bir sözcük . Ayrıca bir tanımlayıcı olarak adlandırılır.

metakarakterdir

Unquoted olduğunda kelimeleri ayıran bir karakter. Aşağıdakilerden biri:

| &; () <> boşluk sekmesi

kontrol operatörü

Bir kontrol işlevi gerçekleştiren bir belirteç . Aşağıdaki sembollerden biridir:

|| & &&; ;; () |

AYRILMIŞ KELİMELER

Ayrılmış kelimeler , kabuk için özel bir anlamı olan kelimelerdir. Aşağıdaki kelimeler, seçilmediğinde ve basit bir komutun ilk sözcüğü (bkz. Aşağıdaki SHELL GRAMMAR ) veya bir üçüncü kelimenin sözcüğü veya komut için ayrılmış olarak kaydedilir:

! durumda seçim yapmak için elif else esac fi yapılırsa o zamana kadar {} time [[]]

SHELL GRAMMAR

Basit Komutlar

Basit bir komut , isteğe bağlı değişken atamaları dizisi, ardından boş hale getirilmiş kelimeler ve yönlendirmelerdir ve bir denetim işleci tarafından sonlandırılır. İlk sözcük, çalıştırılacak komutu belirtir ve argüman olarak sıfırlanır. Kalan kelimeler çağrılan komutun argümanları olarak geçirilir.

Basit bir komutun dönüş değeri, çıkış durumu veya komutun sinyal n ile sonlandırılması durumunda 128+ n'dir .

Boru hatları

Bir boru hattı , karakterle ayrılmış bir veya daha fazla komut dizisidir | . Bir boru hattının formatı:

[ zaman [ -p ]] [! ] komut [ | command2 ...]

Standart komut çıkışı, bir komut aracılığıyla standart komut2'ye bağlanır. Bu bağlantı, komut tarafından belirtilen yönlendirme işlemlerinden önce gerçekleştirilir (aşağıdaki KIRSAYILIM'a bakın).

Eğer ayrılmış kelime ! Bir boru hattından önce, bu boru hattının çıkış durumu, son komutun çıkış durumunun mantıksal NOT'udur. Aksi halde, boru hattının durumu son komutun çıkış durumudur. Kabuk, boru hattındaki tüm komutların bir değer döndürmeden önce sonlandırılmasını bekler.

Zamana göre ayrılmış kelime bir boru hattından önce geliyorsa, boru hattı sona erdiğinde yürütme tarafından tüketilen kullanıcı ve sistem süresi kadar kullanıcı ve sistem zamanı bildirilir. -p seçeneği, çıktı biçimini POSIX tarafından belirtilen değere değiştirir. TIMEFORMAT değişkeni, zamanlama bilgilerinin nasıl görüntüleneceğini belirten bir biçim dizgisine ayarlanabilir; Aşağıdaki Shell Değişkenler altında TIMEFORMAT açıklamasına bakın.

Bir boru hattındaki her komut ayrı bir işlem olarak yürütülür (ör., Alt kabukta).

Listeler

Bir liste , operatörlerden biri tarafından ayrılan bir veya daha fazla boru hattının dizisidir ; & & , && , veya || ve isteğe bağlı olarak biri tarafından sonlandırılmaktadır ; , & veya .

Bu liste operatörlerinden && ve || eşit önceliğe sahip olmak ; ve & # 39; eşit önceliğe sahiptir.

Komutları sınırlamak için noktalı virgül yerine bir listede bir veya daha fazla yeni satır dizisi görünebilir.

Bir komut, kontrol operatörü tarafından sonlandırılırsa, kabuk, alt kabuktaki arka planda komut yürütür. Kabuk, komutun bitmesini beklemez ve geri dönüş durumu 0'dır . sırayla yürütülür; Kabuk, her komutun sırayla sona erdirilmesini bekler. Dönüş durumu, yürütülen son komutun çıkış durumudur.

Kontrol operatörleri && ve || sırasıyla AND listelerini ve OR listelerini belirtir. Bir AND listesi formu var

command1 && komutu2

Komut2 , eğer sadece komut1 sıfırdan bir çıkış durumu döndürürse çalıştırılır.

Bir OR listesi formu var

komut1 || command2

komut2 , yalnızca ve eğer komut1 sıfır olmayan bir çıkış durumunu döndürürse yürütülür. AND ve OR listelerinin dönüş durumu, listedeki son komutun çıkış durumudur.

Bileşik Komutları

Bileşik bir komut aşağıdakilerden biridir:

( liste )

liste bir alt kabukta yürütülür. Kabuğun ortamını etkileyen değişken atamaları ve yerleşik komutlar, komut tamamlandıktan sonra geçerli kalmaz. Dönüş durumu, listenin çıkış durumudur.

{ liste ; }

liste sadece mevcut kabuk ortamında yürütülür. Liste yeni satır veya noktalı virgülle sonlandırılmalıdır. Bu bir grup komutu olarak bilinir. Dönüş durumu, listenin çıkış durumudur. Metacharacters ( ve ) 'dan farklı olarak, { ve } ayrılmış sözcüklerin olduğunu ve ayrılmış bir sözcüğün tanınmasına izin verilen yerlerde olması gerektiğini unutmayın. Bir sözcük aralığına neden olmadıklarından, listeden boşluk ile ayrılmalıdırlar.

(( ifade ))

İfade ARITHMETIC DEĞERLENDİRMESİ altında açıklanan kurallara göre değerlendirilir . İfadenin değeri sıfır değilse, dönüş durumu 0'dır; aksi halde dönüş durumu 1'dir. Bu, " ifadeyi " ifade etmek için tam olarak eşdeğerdir.

[[ İfade ]]

Koşullu ifade ifadesinin değerlendirmesine bağlı olarak 0 veya 1 durumunu döndür . İfadeler, CONDITIONAL EXPRESSIONS altında aşağıda açıklanan primerlerden oluşmaktadır . Sözcük bölme ve yol adı genişlemesi, [[ ve ]] arasındaki kelimeler üzerinde gerçekleştirilmez; tilde genişletme, parametre ve değişken genişletme, aritmetik genişletme, komut ikamesi, işlem ikamesi ve fiyat teklifi kaldırma işlemleri gerçekleştirilir.

== ve ! = Operatörler kullanıldığında, operatörün sağındaki dize bir desen olarak kabul edilir ve Pattern Matching altında aşağıda açıklanan kurallara göre eşleştirilir. Dizge, sırasıyla eşleşiyorsa veya eşleşmiyorsa, dönüş değeri 0, aksi halde 1 olur. Desenin herhangi bir kısmı, bir ip gibi eşleşmesi için zorlanabilir.

İfadeler, azalan öncelik sırasına göre sıralanan aşağıdaki operatörler kullanılarak birleştirilebilir:

( ifade )

İfadenin değerini döndürür. Bu, operatörlerin normal önceliğini geçersiz kılmak için kullanılabilir.

! ifade

İfade yanlışsa doğrudur.

expression1 && expression2

Expression1 ve expression2'nin ikisi de doğruysa true.

expression1 || expression2 expression1 veya expression2 doğruysa true.

&& ve || Eğer ifadenin1 değeri, koşullu ifadenin tümünün geri dönüş değerini belirlemek için yeterli ise, operatörler expression2'yi değerlendirmezler.

isim için [ kelime ]; listelemek ; tamam

Takip eden kelimelerin listesi genişletilerek bir liste listesi oluşturulur. Değişken adı , bu listenin her bir öğesi için sırayla ayarlanır ve liste her seferinde yürütülür. Kelimede atlanırsa, for komutu, ayarlanan her bir konumsal parametre için bir kez yürütür (aşağıdaki PARAMETRELER'e bakın). Dönüş durumu, yürüten son komutun çıkış durumudur. Aşağıdaki öğelerin genişletilmesi boş bir sonuçla sonuçlanırsa, hiçbir komut yürütülmez ve dönüş durumu 0'dır.

(( expr ;; expr2 ; expr3 )) için; listelemek ; tamam

İlk olarak, aritmetik ifade expr1 ARITHMETIC DEĞERLENDİRMESİ altında aşağıda açıklanan kurallara göre değerlendirilir . Aritmetik ifade expr2 , daha sonra sıfır olarak değerlendirene kadar tekrar tekrar değerlendirilir. Her zaman expr2 sıfır olmayan bir değere değerlendirir, liste yürütülür ve aritmetik ifade expr3 değerlendirilir. Herhangi bir ifade atlanırsa, 1 olarak değerlendirilir. Dönüş değeri, yürütülen listedeki son komutun çıkış durumu veya ifadelerden herhangi biri geçersizse false olur.

adı [ kelimede ] seçin; listelemek ; tamam

Takip eden kelimelerin listesi genişletilerek bir liste listesi oluşturulur. Genişletilmiş sözcükler kümesi, her biri bir sayı ile öntanımlı standart hataya yazdırılır. Kelimede atlanırsa, konumsal parametreler yazdırılır (aşağıdaki PARAMETRELER'e bakınız). Daha sonra PS3 istemi görüntülenir ve standart girişten okunan bir satır. Satır, görüntülenen sözcüklerden birine karşılık gelen bir sayıdan oluşuyorsa, o zaman isim değeri bu kelimeye ayarlanır. Hat boşsa, kelimeler ve komut istemi tekrar görüntülenir. EOF okunduğunda, komut tamamlanır. Okunan başka herhangi bir değer, adın null olarak ayarlanmasına neden olur. Okunan satır REPLY değişkenine kaydedilir. Liste , bir komut komutu yürütülene kadar her seçimden sonra yürütülür. Seçimin çıkış durumu, listedeki son komutun çıkış durumu veya herhangi bir komut yürütülemediyse sıfırdır.

[[(] desen [ | desen ] içinde durum kelimesi

Bir vaka komutu önce sözcüğü genişletir ve yol adı genişlemesiyle aynı eşleşme kurallarını kullanarak her bir örüntüyle eşleşmeye çalışır (bkz. Aşağıdaki Yol Adı Genişleme ). Bir eşleşme bulunduğunda, ilgili liste yürütülür. İlk maçtan sonra, sonraki maçlar denenmez. Hiçbir model eşleşmezse çıkış durumu sıfırdır. Aksi halde, listedeki son komutun çıkış durumu.

eğer liste ise ; o zaman liste; [ elif listesi ; o zaman liste ; ] ... [ başka liste ; ] fi

If listesi yürütülür. Çıkış durumu sıfır ise, o zaman liste yürütülür. Aksi takdirde, her elif listesi sırayla yürütülür ve çıkış durumu sıfır ise, karşılık gelen liste yürütülür ve komut tamamlanır. Aksi takdirde, varsa, diğer liste yürütülür. Çıkış durumu, çalıştırılan son komutun çıkış durumu veya herhangi bir koşulun doğruluğu test edilmediyse sıfırdır.

liste sırasında ; listelemek ; tamam

listeye kadar ; listelemek ; tamam

While komutu, listedeki son komut, sıfırın çıkış durumunu döndürdüğü sürece, sürekli olarak yapılacaklar listesini yürütür. Kalan komut, testin reddedilmesi dışında while komutuyla aynıdır; Liste , listedeki son komut sıfır olmayan bir çıkış durumu döndürdüğü sürece yürütülür. While ve komutlar arasındaki çıkış durumu, son yapılacaklar listesi komutunun çıkış durumu veya hiçbiri yürütülemediyse sıfırdır.

[ işlev ] name () { list ; }

Bu ad adında bir işlev tanımlar. İşlev gövdesi , {ve} arasındaki komutların listesidir . Bu liste, ad basit bir komutun adı olarak belirtildiğinde çalıştırılır. Bir işlevin çıkış durumu, gövdedeki son komutun çıkış durumudur. (Aşağıdaki FUNCTIONS bölümüne bakınız.)

YORUMLAR

Etkileşimli olmayan bir kabukta veya shopt yerleşiğindeki interactive_comments seçeneğinin etkinleştirildiği etkileşimli bir kabukta (aşağıdaki SHELL BUILTIN COMMANDS öğesine bakın), # ile başlayan bir sözcük, bu satırdaki ve bu satırdaki kalan tüm karakterlerin yok sayılmasına neden olur. Interactive_comments seçeneği etkinleştirilmemiş etkileşimli bir kabuk, yorumlara izin vermez. Interactive_comments seçeneği etkileşimli kabuklarda varsayılan olarak açıktır.

ALINTI YAPMAK

Teklif , belirli karakterlerin veya kelimelerin kabuğa özel anlamını kaldırmak için kullanılır. Özel karakterler için özel muameleyi devre dışı bırakmak, ayrılmış sözcüklerin bu şekilde tanınmasını önlemek ve parametre genişletmesini önlemek için alıntı yapılabilir.

TANIMLAR altında yukarıda listelenen metakarakterlerin her birinin, kabuğun özel bir anlamı vardır ve eğer kendini temsil ederse, alıntı yapılmalıdır.

Komut geçmişi genişletme olanakları kullanıldığında, genellikle tarih genişletme karakteri ! tarihin genişletilmesini önlemek için alıntı yapılmalıdır.

Üç alıntı mekanizması vardır: kaçış karakteri , tek tırnak ve çift tırnak.

Aktarılmayan bir ters eğik çizgi ( \ ) kaçış karakteridir . haricinde, sonraki karakterin değişmez değerini korur. \ çifti belirirse ve ters eğik çizgi kendini göstermezse, \ bir satır devamı olarak kabul edilir (yani, giriş akışından kaldırılır ve etkin bir şekilde yok sayılır).

Tek tırnak içinde karakterleri saklamak, tırnak içindeki her bir karakterin değişmez değerini korur. Bir ters eğik çizgiden önce bile tek tırnak işareti arasında tek bir fiyat teklifi oluşmayabilir.

Çifte tırnak içine alan karakterleri saklamak, $ , ` , ve \ dışında, tırnak içindeki tüm karakterlerin gerçek değerini korur. $ Ve karakterleri çift tırnak içinde özel anlamlarını korur. Ters eğik çizgi özel karakterini yalnızca aşağıdaki karakterlerden biri ile takip ettiğinde korur: $ , ` , " , \ , ya da . Bir çift tırnak işareti, bir ters eğik çizgi ile çift tırnak içine alınabilir.

Çift tırnaklarda özel parametreler * ve @ özel anlamlara sahiptir (aşağıdaki PARAMETERS'e bakınız).

$ ' String ' formunun kelimeleri özel olarak ele alınır. Sözcük, ANSI C standardı tarafından belirtildiği gibi değiştirilen ters eğik çizgi karakterleri ile dize genişler. Varsa ters eğik çizgi kaçış dizileri aşağıdaki gibi çözülür:

\ a

uyarı (çan)

\ b

geri tuşu

\ e

bir kaçış karakteri

\ f

form besleme

\ n

Yeni hat

\ r

satırbaşı

\ t

yatay sekme

\ v

dikey sekme

\\

Ters eğik çizgi

\'

tek alıntı

\ nnn

değeri sekizlik değer nnn (bir ila üç basamaklı) olan sekiz bitlik karakter

\ x HH

değeri onaltılık değer HH (bir veya iki onaltılık basamak) olan sekiz bitlik karakter

\ c x

kontrol karakteri

Genişletilmiş sonuç, dolar işareti bulunmamış gibi tek tırnaklıdır.

Bir dolar işareti ( $ ) ile öncelenen bir çift tırnaklı dizgenin dizginin mevcut yerel ortama göre çevrilmesine neden olur. Mevcut yerel ayar C veya POSIX ise, dolar işareti göz ardı edilir. Dize çevrilir ve değiştirilirse, yerine çift tırnak verilir.

PARAMETRELERİ

Bir parametre değerleri depolayan bir varlıktır. Özel Parametreler altında bir ad , bir sayı veya aşağıda listelenen özel karakterlerden biri olabilir. Kabuğun amaçları için, bir değişken bir isim ile belirtilen bir parametredir. Bir değişkenin bir değeri ve sıfır veya daha fazla özelliği vardır . Nitelikler declare builtin komutu kullanılarak atanır ( SHELL BUILTIN COMMANDS'da aşağıya bakınız).

Bir değer atanmışsa bir parametre ayarlanır. Boş dize geçerli bir değerdir. Bir değişken ayarlandıktan sonra, yalnızca unset builtin komutu kullanılarak silinebilir (bkz. Aşağıda SHELL BUILTIN COMMANDS ).

Bir değişken , formun bir ifadesiyle atanabilir

ad = [ değer ]

Değer verilmezse, değişkene boş dizge atanır. Tüm değerler , tilde genişletme, parametre ve değişken genişleme, komut ikamesi, aritmetik genişleme ve alıntı kaldırma işleminden geçmektedir (aşağıdaki EXPANSION'a bakınız). Değişkenin tamsayı öznitelik kümesi varsa, $ ((...)) genişleme kullanılmasa bile değer aritmetik genişlemeye tabidir (aşağıdaki Aritmetik Genişleme bölümüne bakın). Özel ayrıntılar altında aşağıda açıklandığı gibi "$ @" dışında, kelime bölme işlemi gerçekleştirilmez. Yol adı genişletme gerçekleştirilmez. Atama ifadeleri de bildirme , yazı kümesi , dışa aktarma , salt okunur ve yerel yerleşik komutlar için bağımsız değişkenler olarak görünebilir.

Konumsal Parametreler

Bir konumsal parametre , tek rakam 0'dan başka, bir veya daha fazla sayı ile gösterilen bir parametredir. Konum parametrelerinin, çağrıldığında kabukun argümanlarından atanması ve set yerleşik komutu kullanılarak yeniden atanması mümkündür. Pozisyonel parametreler atama cümleleri ile atanamaz. Bir kabuk işlevi yürütüldüğünde konumsal parametreler geçici olarak değiştirilir (aşağıdaki FUNCTIONS bölümüne bakın).

Tek bir rakamdan daha büyük bir konumsal parametre genişlediğinde, parantez içine alınmalıdır (aşağıdaki EXPANSION'a bakınız).

Özel parametreler

Kabuk çeşitli parametrelere özel olarak davranır. Bu parametreler sadece referans alınabilir; onlara atama izin verilmez.

*

Birinden başlayarak konumsal parametrelere genişler. Genişleme çift tırnak içinde gerçekleştiğinde, IFS özel değişkeninin ilk karakteri ile ayrılan her bir parametrenin değeri ile tek bir kelimeye genişler. Yani, " $ * ", " $ 1 c $ 2 c ... " ile eşdeğerdir, burada c IFS değişkeninin değerinin ilk karakteridir. IFS unset değilse, parametreler boşluklarla ayrılır. IFS boş ise, parametreler araya giren ayırıcılar olmadan birleştirilir.

@

Birinden başlayarak konumsal parametrelere genişler. Genişleme çift tırnak içinde gerçekleştiğinde, her bir parametre ayrı bir kelimeye genişler. Yani, " $ @ ", " $ 1 " " $ 2 " ile eşdeğerdir ... Konumsal parametreler olmadığında, " $ @ " ve $ @ hiçbir şey için genişletilmez (yani kaldırılır).

#

Ondalık olarak konumsal parametrelerin sayısını genişletir.

?

En son gerçekleştirilen ön plan boru hattının durumuna genişler.

-

Geçerli seçenek seçeneklerine, çağrılan komut satırında veya kabuk tarafından ayarlananlar ( -i seçeneği gibi) tarafından çağrılan olarak genişler.

$

Kabuğun işlem kimliğine genişler. Bir () alt kabuğunda, alt kabuk değil, geçerli kabuğun işlem kimliğine genişler.

!

En son yürütülen arka plan (asenkronize) komutunun işlem kimliğine genişler.

0

Kabuk veya kabuk komut dosyasının adını genişletir. Bu kabuk başlatılıyor. Bash bir komut dosyasıyla çalıştırılırsa, $ 0 bu dosyanın adına ayarlanır. Eğer bash , -c seçeneğiyle başlatılırsa, eğer varsa, yürütülecek dizeden sonra $ 0 ilk argümana ayarlanır. Aksi takdirde, arg komutu sıfır tarafından verildiği gibi, bash'ı çağırmak için kullanılan dosya adına ayarlanır.

_

Kabuk başlangıcında, argüman listesinde geçirilen kabuk veya kabuk betiğinin mutlak dosya adı olarak ayarlanır. Ardından, genişlemeden sonra önceki komutla son bağımsız değişkene genişler. Ayrıca, çalıştırılan her komutun tam dosya adına ayarlanmış ve bu komuta verilen ortama yerleştirilmelidir. Posta denetlenirken, bu parametre denetlenmekte olan posta dosyasının adını tutar.

Kabuk Değişkenleri

Aşağıdaki değişkenler kabuk tarafından ayarlanır:

BASH

Bu bash örneğini çağırmak için kullanılan tam dosya adına genişletir.

BASH_VERSINFO

Üyeleri, bu bash örneği için sürüm bilgilerine sahip olan bir salt okunur dizi değişkeni. Dizi üyelerine atanan değerler aşağıdaki gibidir:

BASH_VERSINFO [ 0]

Ana sürüm numarası ( sürüm ).

BASH_VERSINFO [ 1]

Küçük versiyon numarası ( versiyon ).

BASH_VERSINFO [ 2]

Yama seviyesi.

BASH_VERSINFO [ 3]

Yapı sürümü.

BASH_VERSINFO [ 4]

Serbest bırakma durumu (ör. Beta1 ).

BASH_VERSINFO [ 5]

MACHTYPE değeri.

BASH_VERSION

Bu bash örneğinin sürümünü açıklayan bir dizeye genişler.

COMP_CWORD

COMP_LINE

Mevcut komut satırı. Bu değişken sadece programlanabilir tamamlama araçları tarafından çağrılan kabuk işlevlerinde ve harici komutlarda kullanılabilir (aşağıdaki Programlanabilir Tamamlama'ya bakın).

COMP_POINT

COMP_WORDS

Mevcut komut satırındaki tek tek sözcüklerden oluşan bir dizi değişkeni (aşağıdaki Diziler'e bakınız). Bu değişken sadece programlanabilir tamamlama olanakları tarafından çağrılan kabuk işlevlerinde kullanılabilir (aşağıdaki Programlanabilir Tamamlama bölümüne bakın).

DIRSTACK

Dizin yığınının geçerli içeriğini içeren bir dizi değişkeni (aşağıdaki Diziler'e bakın). Dizinler, dizide yerleşik dizinler tarafından görüntülendikleri sırada görünür. Bu dizi değişkeninin üyelerine atamak, yığınta bulunan dizinleri değiştirmek için kullanılabilir, ancak dizinleri eklemek ve kaldırmak için pushd ve popd yerleşikleri kullanılmalıdır. Bu değişkene atama mevcut dizini değiştirmeyecektir. DIRSTACK unset değilse, daha sonra sıfırlanmasına rağmen, özel özelliklerini kaybeder.

EUID

Kabuk başlangıcında başlatılan geçerli kullanıcının etkin kullanıcı kimliğine genişler. Bu değişken, salt okunurdur.

FUNCNAME

Şu anda çalışan kabuk işlevinin adı. Bu değişken yalnızca bir kabuk işlevi yürütüldüğünde bulunur. FUNCNAME öğesine yapılan atamalar etkili değildir ve bir hata durumu döndürür. FUNCNAME ayarlanmamışsa, daha sonra sıfırlanacak olsa bile, özel özelliklerini kaybeder.

GRUPLARI

Geçerli kullanıcının üye olduğu grupların listesini içeren bir dizi değişkeni. GRUPLAR atamalarının hiçbir etkisi yoktur ve bir hata durumu döndürür. GROUPS unset değilse, daha sonra sıfırlanmasına rağmen, özel özelliklerini kaybeder.

HISTCMD

Mevcut komutun geçmiş listesi veya geçmiş listesindeki dizin. HISTCMD ayarlanmamışsa, daha sonra sıfırlanmasına rağmen, özel özelliklerini kaybeder.

HOSTNAME

Geçerli ana bilgisayarın adına otomatik olarak ayarlanır.

HOSTTYPE

Bash'ın çalıştığı makinenin türünü benzersiz bir şekilde tanımlayan bir dizeye otomatik olarak ayarlayın. Varsayılan sistem bağımlıdır.

LINENO

Bu parametreye her başvurulduğunda, kabuk, bir komut dosyası veya işlev içinde geçerli sıralı satır sayısını (1 ile başlayan) temsil eden bir ondalık sayıyı değiştirir. Bir komut dosyasında veya işlevde olmadığında, değiştirilen değerin anlamlı olması garanti edilmez. LINENO unset değilse, daha sonra sıfırlansa bile, özel özelliklerini kaybeder.

MACHTYPE

Standart GNU işlemci-şirket-sistem biçiminde, bash'ın çalıştığı sistem türünü tam olarak tanımlayan bir dizeye otomatik olarak ayarlanır. Varsayılan sistem bağımlıdır.

OLDPWD

Cd komutu tarafından belirlenen önceki çalışma dizini.

OPTARG

Getopts builtin komutu tarafından işlenen son seçenek argümanının değeri (aşağıdaki SHELL BUILTIN COMMANDS'a bakınız).

OPTIND

Getopts builtin komutu tarafından işlenecek sonraki argümanın indeksi (aşağıdaki SHELL BUILTIN COMMANDS'a bakınız).

OSTYPE

Bash'ın çalıştığı işletim sistemini tanımlayan bir dizeye otomatik olarak ayarlayın. Varsayılan sistem bağımlıdır.

PIPESTATUS

En son yürütülen ön plan boru hattındaki (yalnızca tek bir komut içerebilir) işlemlerden çıkış durumu değerlerinin bir listesini içeren bir dizi değişkeni (aşağıdaki Diziler'e bakın).

PPID

Kabuğun ebeveyninin işlem kimliği. Bu değişken, salt okunurdur.

PWD

Cd komutu tarafından belirlenen geçerli çalışma dizini.

RASGELE

Bu parametre her başvurulduğunda, 0 ile 32767 arasında rastgele bir tam sayı üretilir. Rastgele sayıların sırası RANDOM'a bir değer atanarak başlatılabilir. RANDOM unset değilse, daha sonra sıfırlanacak olsa bile, özel özelliklerini kaybeder.

YANIT

Hiçbir argüman verilmediğinde, read yerleşiği komutu tarafından okunan giriş satırına ayarlayın.

SANİYE

Bu parametreye her başvurulduğunda, kabuk çağrılmasından itibaren geçen saniye sayısı döndürülür. SECONDS'a bir değer atanırsa, sonraki referanslarda geri verilen değer, atamadan sonra atanan değerin artı saniye olduğu saniyedir. SECONDS unset değilse, daha sonra sıfırlansa bile, özel özelliklerini kaybeder.

SHELLOPTS

Etkinleştirilmiş kabuk seçeneklerinin iki noktadan oluşan bir listesi. Listedeki her sözcük, setin yerleşik komutuna -o seçeneği için geçerli bir argümandır (aşağıdaki SHELL BUILTIN COMMANDS'a bakınız). SHELLOPTS içinde görünen seçenekler set -o ile bildirilenlerdir. Bash başladığında bu değişken ortamdaysa, başlangıç ​​dosyalarının okunmasından önce listedeki her kabuk seçeneği etkinleştirilir. Bu değişken salt okunurdur.

SHLVL

Her defasında bir bash örneği ile artırılır .

UID

Kabuk başlangıcında başlatılan geçerli kullanıcının kullanıcı kimliğine genişler. Bu değişken, salt okunurdur.

Aşağıdaki değişkenler kabuk tarafından kullanılır. Bazı durumlarda, bash bir değişkene varsayılan değer atar; Bu durumlar aşağıda belirtilmiştir.

BASH_ENV

Bash bir kabuk betiği yürütürken bu parametre ayarlanırsa, değeri kabuk / mb / lbc olarak belirtmek için komutları içeren bir dosya adı olarak yorumlanır. BASH_ENV değeri, dosya adı olarak yorumlanmadan önce parametre genişletme, komut ikamesi ve aritmetik genişlemeye tabi tutulur. PATH , sonuçta ortaya çıkan dosya adını aramak için kullanılmaz.

CDPATH

Cd komutu için arama yolu. Bu, kabuğun cd komutu tarafından belirtilen hedef dizinleri aradığı dizinden ayrılmış bir dizin listesidir. Örnek bir değer ".: ~: / Usr" şeklindedir.

KOLONLAR

Seçim listelerini yazdırırken terminal genişliğini belirlemek için select yerleşik komutu tarafından kullanılır. Bir SIGWINCH alındığında otomatik olarak ayarlanır.

COMPREPLY

Bash'ın, programlanabilir tamamlama tesisi tarafından çağrılan bir kabuk fonksiyonu tarafından üretilen olası tamamlamaları okuduğu bir dizi değişkeni (aşağıdaki Programlanabilir Tamamlama'ya bakınız).

FCEDIT

Fc yerleşik komutu için varsayılan düzenleyici.

FIGNORE

Dosya adı tamamlanırken yok sayılacak son eklerin kolonlarla ayrılmış bir listesi (aşağıdaki READLINE bölümüne bakın). Soneki, FIGNORE'daki girişlerden biriyle eşleşen bir dosya adı, eşleşen dosya adları listesinden çıkarılır. Örnek bir değer ".o: ~".

GLOBIGNORE

Yol adı genişletme tarafından yok sayılacak dosya adları kümesini tanımlayan bir kolon ayrılmış listesi. Bir yol adı genişletme deseni ile eşleşen bir dosya adı da GLOBIGNORE'daki kalıplardan biriyle eşleşirse, eşleşme listesinden kaldırılır.

HISTCONTROL

Bir ignorpace değeri olarak ayarlanırsa , bir boşluk karakteri ile başlayan satırlar geçmiş listesine girilmez. Yok sayılan değere ayarlanırsa, son tarih satırına uyan satırlar girilmez. Bir gözardı değeri iki seçeneği birleştirir. Eğer ayarlanmamışsa veya yukarıdakilerden başka bir değere ayarlanırsa, ayrıştırıcı tarafından okunan tüm satırlar, HISTIGNORE değerine bağlı olarak tarih listesine kaydedilir. Bu değişkenin işlevi HISTIGNORE tarafından yerine getirilir. Çok satırlı bir bileşik komutun ikinci ve müteakip hatları test edilmez ve HISTCONTROL değerinden bağımsız olarak tarihe eklenir.

HISTFILE

Komut geçmişinin kaydedildiği dosyanın adı (aşağıdaki HISTORY bölümüne bakınız). Varsayılan değer ~ / .bash_history'dir . Eğer unset ise, interaktif bir kabuk çıktığında komut geçmişi kaydedilmez.

HISTFILESIZE

Tarih dosyasında bulunan maksimum satır sayısı. Bu değişkene bir değer atandığında, tarih dosyası, gerekiyorsa, bu satır sayısından daha fazlasını içermemek için kısaltılır. Varsayılan değer 500'dür. Geçmiş dosya, etkileşimli bir kabuk çıktığında yazdıktan sonra bu boyuta da kesilir.

HISTIGNORE

Geçmiş listesinde hangi komut satırlarının kaydedileceğine karar vermek için iki noktadan oluşan bir kalıp listesi kullanılır. Her bir desen, satırın başlangıcında sabitlenir ve tam çizgiyle eşleşmelidir (örtük * * 'eklenmez). HISTCONTROL tarafından belirtilen kontroller uygulandıktan sonra her model çizgiye karşı test edilir. Normal kabuk deseni eşleştirme karakterlerine ek olarak, ` & 'önceki geçmiş satırıyla eşleşir. ` ve 'bir ters eğik çizgi kullanarak kaçabilir; ters eğik çizgi bir eşleşme denemeden önce kaldırılır. Çok satırlı bileşik bir komutun ikinci ve sonraki satırları test edilmez ve HISTIGNORE'un değerinden bağımsız olarak tarihe eklenir .

HISTSIZE

Komut geçmişinde hatırlanacak komutların sayısı (aşağıdaki HISTORY bölümüne bakınız). Varsayılan değer 500'dür.

EV

Mevcut kullanıcının ana dizini; cd yerleşik komutu için varsayılan argüman. Bu değişkenin değeri ayrıca tilde genişletme kullanılırken kullanılır.

HOSTFILE

Kabuğun bir ana makine adını tamamlaması gerektiğinde okunması gereken / etc / hosts ile aynı biçimde bir dosyanın adını içerir. Kabuk çalışırken olası ana makine adı tamamlamaları listesi değiştirilebilir; Değer değiştirildikten sonra bir sonraki ana bilgisayar adı tamamlanma girişiminde bulunulur , bash yeni dosyanın içeriğini varolan listeye ekler. HOSTFILE ayarlanmışsa, ancak değeri yoksa, bash , olası ana makine adı tamamlamalarının listesini almak için / etc / hosts dosyasını okumayı dener. HOSTFILE ayarlanmadığında, ana makine listesi temizlenir.

IFS

Genişlemeden sonra kelime bölme için kullanılan ve okunan yerleşik komutla satırları kelimelere bölmek için kullanılan Dahili Alan Ayırıcı . Varsayılan değer şudur: `` ''.

IGNOREEOF

Tek giriş olarak bir EOF karakterinin alınması üzerine etkileşimli bir kabuğun hareketini kontrol eder. Ayarlanırsa , değer, bas çıkışlarından önce bir giriş satırında ilk karakter olarak yazılması gereken ardışık EOF karakterlerinin sayısıdır. Değişken varsa, ancak sayısal bir değeri yoksa veya hiçbir değeri yoksa, varsayılan değer 10'dur. Varsa, EOF girişin kabuğun sonunu belirtir.

inputrc

Readline başlangıç ​​dosyasının dosya adı ~ / .inputrc değerini geçersiz kılar (aşağıdaki READLINE'a bakınız).

LANG

LC_ ile başlayan bir değişken ile özellikle seçilmemiş herhangi bir kategori için yerel kategoriyi belirlemek için kullanılır.

LC_ALL

Bu değişken, LANG değerini ve bir yerel kategoriyi belirten diğer LC_ değişkenini geçersiz kılar.

LC_COLLATE

Bu değişken, yol adı genişletme sonuçlarını sıralarken kullanılan harmanlama sırasını belirler ve aralık ifadelerinin, denklik sınıflarının ve harmanlama dizilerinin yol adı genişletme ve desen eşleştirmesi içindeki davranışlarını belirler.

LC_CTYPE

Bu değişken, karakterlerin yorumlanmasını ve pathname genişletme ve desen eşleştirmesi içindeki karakter sınıflarının davranışını belirler.

LC_MESSAGES

Bu değişken, bir $ ile öncelenmiş çift tırnaklı dizeleri çevirmek için kullanılan yerel ayarı belirler.

LC_NUMERIC

Bu değişken, sayı biçimlendirmesi için kullanılan yerel kategoriyi belirler.

HATLARI

Seçim listelerini yazdırmak için sütun uzunluğunu belirlemek için select yerleşik komutu tarafından kullanılır. Bir SIGWINCH alındığında otomatik olarak ayarlanır.

POSTA

Bu parametre bir dosya ismine ayarlanmışsa ve MAILPATH değişkeni ayarlanmamışsa, bash , kullanıcıya belirtilen dosyanın mail adresini bildirir.

MAILCHECK

Posta için kaç kez (saniye cinsinden) bash denetlendiğini belirtir. Varsayılan 60 saniyedir. Postaları kontrol etme zamanı geldiğinde, kabuk birincil istemi görüntülemeden önce bunu yapar. Bu değişken unset olursa veya sıfırdan büyük veya sıfıra eşit olmayan bir değere ayarlanırsa, kabuk posta denetlemeyi devre dışı bırakır.

MAILPATH

Posta için işaretlenecek kolon isimleriyle ayrılmış dosya adları listesi. Belirli bir dosyaya posta geldiğinde yazdırılacak mesaj, dosya isminin mesajdan bir `? 'Ile ayrılmasıyla belirtilebilir. İletinin metninde kullanıldığında, $ _ geçerli posta dosyasının adına genişletilir. Örnek:

MAILPATH = '/ var / mail / bfox? "Mailiniz var": ~ / shell-mail? "$ _ Mail!"

Bash bu değişken için varsayılan bir değer sağlar, ancak kullandığı kullanıcı posta dosyalarının konumu sisteme bağlıdır (ör. / Var / mail / $ USER ).

OPTERR

1 değerine ayarlanırsa, bash , getopts builtin komutu tarafından oluşturulan hata mesajlarını görüntüler (bkz. Aşağıda SHELL BUILTIN COMMANDS ). Kabuk çağrıldığında veya kabuk betiği yürütüldüğünde her OPTERR 1'e başlatılır.

YOL

Komutlar için arama yolu. Kabuğun komutları aradığı kolonlarla ayrılmış bir dizin listesidir (aşağıdaki COMMAND EXECUTION bölümüne bakın). Varsayılan yol sisteme bağlıdır ve bash'ı yükleyen yönetici tarafından ayarlanır. Ortak bir değer `/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT

Bash başladığında bu değişken ortamdaysa, kabuk --posix çağırma seçeneği sağlanmış gibi başlangıç ​​dosyalarını okumadan önce posix moduna girer. Kabuk çalışırken ayarlanırsa, bash , -o posix komut kümesi çalıştırılmış gibi, posix modunu etkinleştirir.

PROMPT_COMMAND

Ayarlanırsa, değer, her ana sorgunun verilmesinden önce bir komut olarak yürütülür.

PS1

Bu parametrenin değeri genişletilir (bkz. Aşağıdaki PROMPTING ) ve birincil komut dizisi olarak kullanılır. Varsayılan değer `` \ s- \ v \ $ ''.

PS2

Bu parametrenin değeri PS1 ile olduğu gibi genişletilir ve ikincil komut dizisi olarak kullanılır. Varsayılan "` > "dir.

PS3

Bu parametrenin değeri, seçme komutunun sorgusu olarak kullanılır (yukarıdaki SHELL GRAMMAR'a bakın).

PS4

Bu parametrenin değeri, PS1 ile olduğu gibi genişletilir ve yürütme izi sırasında her komut bash görüntülenmeden önce değer yazdırılır. PS4'ün ilk karakteri, birden fazla dolaylılık seviyesini göstermek için gerektiğinde çoğaltılır. Varsayılan, `` + '' dır.

ZAMAN FORMATI

Bu parametrenin değeri, zamana bağlı kelime ile öntanımlı boru hatları için zamanlama bilgisinin nasıl görüntüleneceğini belirten bir biçim dizesi olarak kullanılır. % Karakteri, bir zaman değerine veya başka bir bilgiye genişletilen bir çıkış sekansı sunar. Kaçış dizileri ve anlamları aşağıdaki gibidir; diş telleri isteğe bağlı bölümleri gösterir.

%%

Bir gerçek % .

% [ p ] [l] R

Saniye cinsinden geçen süre.

% [ p ] [l] U

Kullanıcı modunda harcanan CPU saniye sayısı.

% [ p ] [l] S

Sistem modunda harcanan CPU saniye sayısı.

% P

CPU yüzdesi (% U +% S) /% R olarak hesaplandı.

İsteğe bağlı p , kesinliği , ondalık basamaktan sonraki kesirli basamak sayısını belirten bir rakamdır. 0 değeri, çıktılanacak ondalık nokta veya kesime neden olmaz. Ondalık noktasından sonra en fazla üç yerde belirtilebilir; p'nin 3'ten büyük değerleri 3 olarak değiştirilir. p belirtilmezse, 3 değeri kullanılır.

İsteğe bağlı l , MM m SS biçimindeki dakikalar da dahil olmak üzere daha uzun bir biçim belirtir. FF s. P değeri, fraksiyonun dahil edilip edilmediğini belirler.

Bu değişken ayarlanmamışsa, bash $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' değerine sahipmiş gibi davranır . Değer boşsa, zamanlama bilgisi görüntülenmez. Biçim dizgisi görüntülendiğinde, takip eden bir yeni satır eklenir.

TMOUT

Sıfırdan büyük bir değere ayarlanırsa, TMOUT okuma yerleşiği için varsayılan zaman aşımı olarak kabul edilir. Giriş bir terminalden geldiğinde TMOUT saniye sonra girişin gelmemesi durumunda seçim komutu sonlandırılır. Etkileşimli bir kabukta, değer, birincil istemi verdikten sonra giriş için beklenecek saniye sayısı olarak yorumlanır. Bash , giriş gerçekleşmezse, bu sayıyı bekledikten sonra sona erer.

auto_resume

Bu değişken, kabuğun kullanıcı ile nasıl etkileşimde bulunduğunu ve iş kontrolünü kontrol eder. Bu değişken ayarlanmışsa, yönlendirmeler olmayan tek kelimelik basit komutlar, mevcut bir durdurulmuş işin yeniden başlatılması için aday olarak kabul edilir. Belirsizliğe izin verilmez; Yazılan dizeden başlayarak birden fazla iş varsa, en son erişilen iş seçilir. Durdurulan bir işin adı , bu bağlamda, başlatmak için kullanılan komut satırıdır. Tam değere ayarlanırsa, sağlanan dizginin durdurulan işin adıyla tam olarak eşleşmesi gerekir; Alt dizeye ayarlanırsa, sağlanan dizenin durdurulmuş bir işin adının alt dizesiyle eşleşmesi gerekir. Alt dize değeri, % ' ye benzer işlevsellik sağlar ? iş tanımlayıcısı (aşağıdaki İŞ KONTROLÜ'ne bakınız). Başka bir değere ayarlanırsa, sağlanan dizenin durdurulmuş bir işin adının bir öneki olması gerekir; Bu, % iş tanımlayıcısına benzer işlevsellik sağlar.

histchars

Tarihin genişlemesini ve belirtimini kontrol eden iki veya üç karakter (aşağıdaki GEÇERS GENLEŞME bölümüne bakınız). İlk karakter, tarih genişletme karakteridir, bir tarih açılımının başlangıcını gösteren karakter, normalde ! '. İkinci karakter, girilen bir önceki komutu yeniden çalıştırmak için kısayol olarak kullanılan ve komutta bir dizeyi diğerine koyan hızlı ikame karakteridir. Varsayılan ' ^ '. İsteğe bağlı üçüncü karakter, satırın geri kalanının normal olarak bir kelimenin ilk karakteri olarak bulunduğunda bir yorum olduğunu belirten karakterdir. Geçmiş yorum karakteri, satırdaki kalan kelimeler için geçmişin yer değiştirmesine neden olur. Kabuk ayrıştırıcısının, hattın geri kalanını bir yorum olarak ele alması zorunlu değildir.

Diziler

Bash tek boyutlu dizi değişkenleri sağlar. Herhangi bir değişken bir dizi olarak kullanılabilir; declare yerleşiği açıkça bir dizi bildirecektir. Bir dizinin büyüklüğü üzerinde herhangi bir sınırlama veya üyelerin endeksli veya bitişik olarak atanması gerekliliği yoktur. Diziler tamsayılar kullanılarak indekslenir ve sıfır tabanlıdır.

Herhangi bir değişken sözdizimi adı [ subscript ] = value kullanılarak atanırsa, bir dizi otomatik olarak oluşturulur. Alt simge , sıfırdan büyük veya sıfıra eşit bir sayıyı değerlendirmek zorunda olan bir aritmetik ifade olarak kabul edilir. Açıkça bir dizi bildirmek için, declare -a name kullanın (aşağıdaki SHELL BUILTIN COMMANDS'a bakın). declare -a adı [ subscript ] de kabul edilir; alt simge yok sayılır. Bildirimler, declare ve readonly builtins kullanılarak bir dizi değişkeni için belirtilebilir. Her özellik bir dizinin tüm üyeleri için geçerlidir.

Diziler, form değeri = ( değer 1 ... değer n ) bileşik atamalarını kullanmaya atandı, burada her bir değer [ subscript ] = dizgecidir . Sadece dize gereklidir. İsteğe bağlı parantez ve alt simge sağlanırsa, bu dizin atandı; aksi halde, atanan elemanın indeksi, ifade ile bire atanan son endekstir. Dizinleme sıfırdan başlar. Bu sözdizimi de bildirme yerleşik tarafından kabul edilir. Bireysel dizi öğeleri, yukarıda tanıtılan [ subscript ] = değer sözdizimi kullanılarak atanabilir.

Unset yerleşimi dizileri yok etmek için kullanılır. unset name [ subscript ] dizin alt dizinindeki dizi elemanını yok eder. unset name , burada name bir dizidir, ya da unset isminin [ subscript ] olduğu, burada alt dizinin * ya da @ olduğu tüm diziyi kaldırır.

Bildiri , yerel ve salt okunur yerleşik her biri bir dizi belirtmek için bir -a seçeneği kabul eder. Read yerleşiği, standart girdiden bir diziye okunan sözcüklerin listesini atamak için bir -a seçeneği kabul eder. Set ve declare builtins, dizi değerlerini ödev olarak yeniden kullanılmasına izin verecek şekilde görüntüler.

GENİŞLEME

Genişleme, sözcüklere ayrıldıktan sonra komut satırında gerçekleştirilir. Yapılan yedi genişletme türü vardır: brace genişletme , tilde genişletme , parametre ve değişken genişletme , komut değiştirme , aritmetik genişletme , sözcük bölme ve yol genişletme .

Genişletme sırasının sırası: küme genişletme, tilde genişletme, parametre, değişken ve aritmetik genişleme ve komut ikamesi (soldan sağa bir şekilde yapılır), kelime bölme ve yol adı genişletme.

Destekleyebilen sistemlerde, ilave bir genişleme var: süreç ikamesi .

Brace Genişleme

Brace genişlemesi , keyfi dizelerin oluşturulabileceği bir mekanizmadır. Bu mekanizma, yol genişletme işlemine benzer, ancak oluşturulan dosya adlarının olmaması gerekir. Genişletilmiş brace olacak desenleri, isteğe bağlı bir postscript , ardından bir çift parantez arasında bir dizi virgülle ayrılmış dizeleri izleyen, isteğe bağlı bir giriş eki şeklini alır. Başlangıç ​​eki, parantez içinde bulunan her dizeye ön eklenir ve postscript daha sonra soldan sağa doğru genişleyen her bir sonuç dizisine eklenir.

Brace açılımları iç içe olabilir. Genişletilmiş her dizenin sonuçları sıralanmaz; soldan sağa sipariş korunur. Örneğin, bir { d, c, b } e, "ade ace abe" ye genişler.

Brace genişletme, diğer genişletmelerden önce yapılır ve sonuçta diğer genişletmelere özel karakterler korunur. Bu kesinlikle metinseldir. Bash , genişletme bağlamı veya parantezler arasındaki metin için sözdizimsel bir yorumlama uygulamıyor.

Bu yapı genellikle, oluşturulacak dizelerin ortak öneki yukarıdaki örnekte olduğundan daha uzun olduğunda kısaca kullanılır:

mkdir / usr / local / src / bash / {eski, yeni, dist, böcek}

veya

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Brace genişlemesi, sh'in tarihi sürümleriyle hafif uyumsuzluğu ortaya çıkarır . sh , bir sözcüğün parçası olarak göründüğünde özel olarak açılma veya kapanma işlemlerini tedavi etmez ve bunları çıktıda saklar. Bash , brace genişlemesinin bir sonucu olarak parantezleri kelimelerden kaldırır. Örneğin, çıkışta aynı şekilde {1,2} dosyası göründüğü gibi girilen bir sözcük çıktı. Aynı kelime bash tarafından genişletildikten sonra dosya1 dosya2 olarak çıkar. Eğer sh ile sıkı uyumluluk istenirse, + B seçeneğiyle bash başlatın ya da + B seçeneği ile brace genişletmeyi set komutuna engelleyin (aşağıdaki SHELL BUILTIN COMMANDS bölümüne bakın).

Tilde Genişleme

Eğer bir kelime seçilmemiş tilde karakteri (` ~ ') ile başlarsa, ilk ayrılmamış eğik çizgiden önceki tüm karakterler (ya da işaretsiz eğik çizgi yoksa tüm karakterler) tilde-öneki olarak kabul edilir. Tilde-önekindeki karakterlerin hiçbiri alıntı yapılmadıysa, tilde-tiksini takip eden karakterler olası bir oturum açma adı olarak kabul edilir. Bu oturum açma adı boş dizeyse, tilde HOME parametresi kabuk parametresi ile değiştirilir. HOME unset değilse, bunun yerine shell'i çalıştıran kullanıcının giriş dizini yerine kullanılır. Aksi takdirde, tilde-öneki, belirtilen oturum açma adıyla ilişkili giriş dizini ile değiştirilir.

Tilde-öneki bir `~ + 'ise, kabuk değişkeni PWD'nin değeri tilde-önekinin yerini alır. Tilde-öneki bir ~ ~ 'ise, ayarlanmış olan kabuk değişkeni OLDPWD değeri değiştirilir. Tilde-prefixindeki tilde izleyen karakterler, isteğe bağlı olarak `+ 'ya da` -' ile öntanımlı bir sayı N'den oluşursa, tilde-öneki, görüntülendiği gibi dizin kümesinden karşılık gelen öğe ile değiştirilir. tilde-prefix ile argüman olarak çağrılan dizinler tarafından. Tilde-prefix'deki tilde izleyen karakterler, bir '+' ya da `- 'olmayan bir sayıdan oluşursa,` +' kabul edilir.

Giriş adı geçersizse veya tilde genişletme başarısız olursa, sözcük değişmez.

Her bir değişken ataması, hemen : a = veya aşağıdakileri takip eden, seçilmemiş tilde-önekleri için kontrol edilir. Bu durumlarda, tilde genişlemesi de gerçekleştirilir. Sonuç olarak, PATH , MAILPATH ve CDPATH atamalarında tildes ile dosya adlarını kullanabilir ve kabuk genişletilmiş değeri atar.

Parametre genişletme

' $ ' Karakteri, parametre genişletme, komut ikamesi veya aritmetik genişleme sunar. Genişletilecek parametre adı veya sembolü, isteğe bağlı olan ancak ismin bir parçası olarak yorumlanabilecek hemen sonraki karakterlerden genişletilecek olan değişkeni korumak için kullanılan parantez içine alınabilir.

Parantez kullanıldığında, eşleşen sonlandırma ayracı, bir ters eğik çizgi veya alıntılanan bir dizgeden kaçmayan ve gömülü bir aritmetik genişletme, komut ikamesi veya paramter genişletme içinde olmayan ilk ` } 'dir.

Parametrenin değeri değiştirilir. Parantezler, parametre birden fazla basamaklı bir konumsal parametre olduğunda veya parametrenin ardından, adının bir parçası olarak yorumlanmayacak bir karakter tarafından izlendiğinde gereklidir.

Aşağıdaki durumların her birinde, sözcük tilde genişletme, parametre genişletme, komut değiştirme ve aritmetik genişletme işlemlerine tabidir. Alt dizge genişletme işlemi gerçekleştirilmediğinde, bash , unset veya null olan bir parametre için test eder; kolonun çıkarılması, sadece unset olan bir parametre için bir teste neden olur.

Varsayılan Değerleri Kullan . Parametre unset veya null ise, sözcüğün genişletilmesi değiştirilir. Aksi halde, parametrenin değeri değiştirilir.

Varsayılan Değerler Ata . Parametre unset veya null ise, sözcüğün genişletilmesi parametreye atanır. Parametrenin değeri daha sonra değiştirilir. Konumsal parametreler ve özel parametreler bu şekilde atanmayabilir.

Boş veya Ayarlanmamışsa Ekran Hatası . Parametre boş veya unset ise, sözcüğün genişletilmesi (veya kelime mevcut değilse bu etki için bir mesaj) standart hataya yazılır ve eğer interaktif değilse kabuk çıkar. Aksi halde, parametrenin değeri değiştirilir.

Alternatif Değeri Kullan . Parametre null veya unset ise, hiçbir şey değiştirilmez, aksi takdirde sözcüğün genişletilmesi yerine geçer.

IFS özel değişkeninin ilk karakteri ile ayrılmış isimleri önekle başlayan değişkenlerin adlarını genişletir.

Parametrenin değerindeki karakterlerin uzunluğu değiştirilir. Parametre * veya @ ise , değiştirilen değer konumsal parametrelerin sayısıdır. Parametre , * veya @ ile abone edilen bir dizi adıysa , değiştirilen değer, dizideki öğe sayısıdır.

Sözcük , yol adı genişletme işleminde olduğu gibi bir model oluşturmak için genişletilir. Kalıp, parametrenin değerinin başlangıcıyla eşleşiyorsa, genişlemenin sonucu, en kısa eşleşen kalıpla ("` # "durumda) veya en uzun eşleşen kalıpla (` ` ## ') genişletilmiş parametrenin sonucudur. 'case] silindi. Parametre @ veya * ise, model kaldırma işlemi sırayla her bir konum parametresine uygulanır ve genişletme sonuç listesidir. Parametre , @ veya * ile abone edilen bir dizi değişkeni ise, sırayla dizinin her üyesine desen kaldırma işlemi uygulanır ve genişletme, sonuç listesidir.

Sözcük , yol adı genişletme işleminde olduğu gibi bir model oluşturmak için genişletilir. Kalıp, parametrenin genişletilmiş değerinin izleyen bir kısmı ile eşleşiyorsa, genişlemenin sonucu, en kısa eşleşen kalıpla (`` % '' durumda) veya en uzun eşleşen desene sahip parametrenin genişletilmiş değeridir (`` % % '' durum) silindi. Parametre @ veya * ise, model kaldırma işlemi sırayla her bir konum parametresine uygulanır ve genişletme sonuç listesidir. Parametre , @ veya * ile abone edilen bir dizi değişkeni ise, sırayla dizinin her üyesine desen kaldırma işlemi uygulanır ve genişletme, sonuç listesidir.

Kalıp , yol adı genişlemesinde olduğu gibi bir model oluşturmak için genişletilir. Parametre genişletilir ve değerine göre en uzun desen eşleşmesi dizgeyle değiştirilir. İlk formda, sadece ilk eşleşme değiştirilir. İkinci form, tüm desen eşlemelerinin dizgeyle değiştirilmesine neden olur. Desen # ile başlarsa, genişletilmiş parametre değerinin başlangıcında eşleşmelidir. Desen % ile başlarsa, genişletilmiş parametre değerinin sonunda eşleşmelidir. Dize boşsa, desen eşleşmeleri silinir ve / sonraki model ihmal edilebilir. Parametre @ veya * ise , her bir konumsal parametreye sırasıyla ikame işlemi uygulanır ve genişletme sonuç listesidir. Parametre , @ veya * ile abone edilen bir dizi değişkeni ise, sıralama işlemi sırayla dizinin her bir üyesine uygulanır ve genişletme, sonuç listesidir.

Komuta Değiştirme

Komut yerine koyma, komut adının değiştirilmesi için bir komutun çıktısını sağlar. İki form var:

$ ( komut )

veya

komut

Bash , komutu çalıştırarak ve komutun standart çıktısıyla komut ikamesini değiştirerek, sonlanan tüm satırlar silinerek genişletmeyi gerçekleştirir. Gömülü yeni satırlar silinmez, ancak kelime bölme sırasında kaldırılabilirler. Komut ikame $ (kedi dosyası ) eşdeğeri ancak daha hızlı $ (< dosya ) ile değiştirilebilir.

Eski stil backquote ikame şekli kullanıldığında, ters eğik çizgi, $ , ` veya \ sonraki harfleri takip etmedikçe anlamını korur. Bir ters eğik çizgiden önce gelmeyen ilk backquote, komut ikamesini sonlandırır. $ ( Komut ) formunu kullanırken, parantezler arasındaki tüm karakterler komutu oluşturur; hiçbiri özel muamele görmez.

Komut değişiklikleri iç içe olabilir. Backquoted formunu kullanırken yuva yapmak için, iç backquotes ile ters eğik çizgi kaçmak.

Eğer ikame çift tırnak içinde görünürse, sonuçlarda kelime bölme ve yol adı genişlemesi yapılmaz.

Aritmetik Genişleme

Aritmetik genişleme, bir aritmetik ifadenin değerlendirilmesini ve sonucun değiştirilmesini sağlar. Aritmetik genişletme biçimi şöyledir:

$ (( ifade ))

İfade çift ​​tırnak içine alınmış gibi ele alınır, ancak parantez içinde çift tırnak özel olarak ele alınmaz. İfadedeki tüm belirteçler, parametre genişletme, dizi genişletme, komut ikame ve alıntı kaldırma işlemlerinden geçer. Aritmetik sübstitüsyonlar iç içe olabilir.

Değerlendirme, ARİTMETİK DEĞERLENDİRME altında aşağıda listelenen kurallara göre yapılır . İfadenin geçersiz olması durumunda, bash , başarısızlığı belirten bir mesaj yazdırır ve hiçbir ikame gerçekleşmez.

Süreç İkamesi

Proses ikamesi , adlandırılmış boruları ( FIFO'ları ) destekleyen sistemlerde veya açık dosya adlandırma / dev / fd yönteminde desteklenir. <( Liste ) veya > ( liste ) şeklini alır. İşlem listesi , bir FIFO'ya veya / dev / fd dosyasındaki bir dosyaya bağlı giriş veya çıkış ile çalışır. Bu dosyanın adı, genişletmenin sonucu olarak geçerli komuta argüman olarak iletilir. > ( Liste ) formu kullanılırsa, dosyaya yazma, liste için girdi sağlayacaktır. <( List ) formu kullanılırsa, liste çıktısını almak için argüman olarak iletilen dosya okunmalıdır.

Mevcut olduğunda, işlem ikamesi, parametre ve değişken genişleme, komut ikamesi ve aritmetik genişleme ile eşzamanlı olarak gerçekleştirilir.

Kelime Bölme

Kabuk, parametre genişletme, komut ikamesi ve kelime bölme için çift tırnak içinde oluşmayan aritmetik genişleme sonuçlarını tarar.

Kabuk, IFS'nin her karakterini bir sınırlayıcı olarak ele alır ve diğer genişlemelerin sonuçlarını bu karakterler üzerindeki kelimelere ayırır. IFS unset değilse veya değeri tam olarak ise, varsayılan olarak, IFS karakterlerinin herhangi bir dizisi sözcükleri sınırlamaya yarar. IFS varsayılandan farklı bir değere sahipse, boşluk karakterleri IFS (bir IFS boşluk karakteri) değerinde olduğu sürece, sözcüğün başlangıcında ve sonunda, boşluk karakterleri ve boşluk sekansları göz ardı edilir. IFS'deki herhangi bir karakter, herhangi bir bitişik IFS boşluk karakteriyle birlikte IFS boşlukları olmayan bir alanı sınırlar. Bir IFS boşluk karakter dizisi de bir sınırlayıcı olarak ele alınmaktadır. IFS'nin değeri sıfır ise, kelime ayırma gerçekleşmez.

Açık boş argümanlar ( "" veya "" ) korunur. Değer içermeyen parametrelerin genişletilmesinden kaynaklanan, kestirilmemiş örtük geçersiz argümanlar kaldırılır. Değer olmayan bir parametre çift tırnak içinde genişletilirse, boş bir argüman sonuçlanır ve korunur.

Genişleme olmazsa, bölme yapılmaz.

Yol Adı Genişletme

Sözcük bölme işleminden sonra, -f seçeneği ayarlanmadıkça, bash her karakterin * ,? ve [ . Bu karakterlerden biri görüntülenirse, sözcük bir desen olarak kabul edilir ve kalıba uyan dosya adlarının alfabetik olarak sıralanmış bir listesiyle değiştirilir. Eşleşen dosya adı bulunamazsa ve kabuk seçeneği nullglob devre dışı bırakılırsa, sözcük değiştirilmeden kalır. Nullglob seçeneği ayarlanmışsa ve eşleşme bulunamazsa, sözcük kaldırılır. Eğer kabuk seçeneği nocaseglob etkinse, maç alfabetik karakterlerin durumuna bakılmaksızın gerçekleştirilir. Bir yol adı genişletme için bir desen kullanıldığında, bir isim başlangıcında veya bir eğik çizginin hemen ardından ``. '' Karakteri, kabuk seçeneği dotglob ayarlanmadıkça, açıkça eşleşmelidir. Bir yol adını eşleştirirken, eğik çizgi karakteri her zaman açıkça eşleşmelidir. Diğer durumlarda, ``. '' Karakteri özel olarak ele alınmaz. Nocaseglob , nullglob ve dotglob shell seçeneklerinin bir açıklaması için SHELL BUILTIN COMMANDS altında aşağıdaki shopt açıklamasına bakın.

GLOBIGNORE kabuk değişkeni, bir desenle eşleşen dosya adları kümesini kısıtlamak için kullanılabilir. GLOBIGNORE ayarlanmışsa, GLOBIGNORE'daki kalıplardan biriyle eşleşen her eşleşen dosya adı eşleşme listesinden kaldırılır. GLOBIGNORE ayarlandığında bile, ``. '' Ve `` .. '' dosya isimleri her zaman dikkate alınmaz. Ancak, GLOBIGNORE ayarı dotglob kabuk seçeneğini etkinleştirmenin etkisine sahiptir, bu nedenle ``. '' Ile başlayan tüm diğer dosya adları eşleşecektir. Bir ``. '' Ile başlayan dosya adlarını görmezden gelmenin eski davranışını almak için, GLOBIGNORE'daki desenlerden birini ``. * '' Yapın. GLOBIGNORE ayarlanmadığında dotglob seçeneği devre dışı bırakıldı.

Desen Eşleme

Aşağıda açıklanan özel desen karakterleri dışında bir desende görünen herhangi bir karakter kendisiyle eşleşir. NUL karakteri bir desende oluşmayabilir. Özel kalıp karakterleri, tam anlamıyla eşleşeceklerse alıntılanmalıdır.

Özel desen karakterleri aşağıdaki anlamlara sahiptir:

*

Boş dizge dahil olmak üzere herhangi bir dizeyle eşleşir.

?

Herhangi bir karakterle eşleşir.

[...]

Kapalı karakterlerden herhangi biri ile eşleşir. Bir tire ile ayrılmış bir çift karakter bir aralık ifadesini ifade eder; Geçerli yerel ayar dizisini ve karakter kümesini kullanarak, bu iki karakter arasında yer alan her karakter eşleştirilir. İlk karakteri takip eden [ ise a ! veya bir ^ o zaman eklenmeyen herhangi bir karakter eşleştirilir. Aralık ifadelerindeki karakterlerin sıralama sırası, ayarlanmışsa geçerli yerel ayar ve LC_COLLATE kabuk değişkeninin değerine göre belirlenir. A - kümedeki ilk veya son karakter olarak eklenerek eşleştirilebilir. A ] , kümedeki ilk karakter olarak eklenerek eşleştirilebilir.

[ Ve ] içinde, karakter sınıfları , sınıfın POSIX.2 standardında tanımlanan aşağıdaki sınıflardan biri olduğu sözdizimi [: class :] kullanılarak belirtilebilir:

alnum alfa ascii boş cntrl haneli grafik alt baskı nokta alana üst sözcük xdigit
Bir karakter sınıfı, o sınıfa ait herhangi bir karakterle eşleşir. Sözcük karakter sınıfı harfler, rakamlar ve karakterle eşleşir.

[ Ve ] içinde, eşdeğerlik sınıfı , [ c =] sözdizimi kullanılarak belirtilebilir; bu, karakter kümesine göre aynı harmanlama ağırlığına (geçerli yerel ayar tarafından tanımlandığı gibi) uyan tüm karakterlerle eşleşir.

[ Ve ] içinde sözdizimi [. sembolü .] harmanlama sembolü sembolüyle eşleşir.

Ekstremme kabuğu seçeneği shopt yerleşiği kullanılarak etkinleştirilirse, çeşitli genişletilmiş desen eşleştirme operatörleri tanınır. Aşağıdaki açıklamada, bir desen listesi , | | . Kompozit desenler aşağıdaki alt kalıplardan bir veya daha fazlası kullanılarak oluşturulabilir:

? ( desen listesi )

Verilen kalıpların sıfır veya bir oluşumuyla eşleşir

* ( desen listesi )

Verilen kalıpların sıfır veya daha fazla örneğini eşleştirir

+ ( desen listesi )

Verilen kalıpların bir veya daha fazla örneğini eşleştirir

@ ( desen listesi )

Verilen kalıplardan tam olarak eşleşir

! ( desen listesi )

Verilen kalıplardan biri dışında herhangi bir şeyle eşleşir

Alıntı Kaldırma

Önceki genişletmelerden sonra, yukarıdaki genişletmelerden birinden kaynaklanmayan \ , ' ve " karakterlerinin tüm kullanılmayan olayları kaldırılır.

REDIRECTION

Bir komut yürütülmeden önce, giriş ve çıkış, kabuk tarafından yorumlanan özel bir notasyon kullanılarak yeniden yönlendirilebilir . Yönlendirme, geçerli kabuk yürütme ortamı için dosyaları açmak ve kapatmak için de kullanılabilir. Aşağıdaki yönlendirme operatörleri, basit bir komut içinde herhangi bir yerden önce gelebilir veya görünebilir veya bir komut izleyebilir. Yönlendirmeler, görüntülendikleri sırayla, soldan sağa doğru işlenir.

Aşağıdaki açıklamalarda, dosya tanıtıcı numarası atlanırsa ve yönlendirme işlecinin ilk karakteri < ise, yönlendirme standart girdiyi (dosya tanıtıcısı 0) belirtir. Yeniden yönlendirme işlecinin ilk karakteri > ise, yönlendirme standart çıktıya (dosya tanıtıcı 1) başvurur.

Aşağıdaki açıklamalarda yönlendirme operatörünü takip eden, aksi belirtilmedikçe, brace genişletme, tilde genişletme, parametre genişletme, komut ikamesi, aritmetik genişletme, alıntı kaldırma, yol adı genişletme ve kelime bölme işlemine tabi tutulur. Birden fazla sözcüğe genişlerse, bash bir hata bildirir.

Yönlendirme sırasının önemli olduğunu unutmayın. Örneğin, komut

ls > dirlist 2 > & 1

komut çalışırken, hem standart çıktı hem de standart hatayı dosya direktörüne yönlendirir

ls 2 > & 1 > dirlist

standart çıktının dirlisteye yönlendirilmesinden önce standart hata standart çıktı olarak kopyalandığından, yalnızca standart çıktıyı dosya direklerine yönlendirir.

Bash , aşağıdaki tabloda açıklandığı gibi, yönlendirmelerde kullanıldığında özel olarak birkaç dosya ismini ele alır:

/ dev / fd / fd

Fd geçerli bir tam sayı ise, dosya tanıtıcı fd çoğaltılır.

/ dev / Stdin

Dosya tanıtıcısı 0 kopyalandı.

/ dev / stdout'u

Dosya tanıtıcısı 1 kopyalandı.

/ dev / Stderr

Dosya tanıtıcısı 2 kopyalandı.

/ dev / tcp / host / port

Ana bilgisayar geçerli bir ana makine adı veya Internet adresiyse ve bağlantı noktası bir tamsayı bağlantı noktası numarası veya hizmet adıysa , bash ilgili sokete bir TCP bağlantısı açmaya çalışır.

/ dev / udp / host / port

Ana bilgisayar geçerli bir ana bilgisayar adı veya Internet adresiyse ve bağlantı noktası bir tamsayı bağlantı noktası numarası veya hizmet adıysa , bash karşılık gelen sokete UDP bağlantısı açmaya çalışır.

Bir dosya açma veya oluşturma hatası, yönlendirmenin başarısız olmasına neden olur.

Yönlendirme Girişi

Girdinin yönlendirilmesi, dosya tanıtıcısı n üzerinde okunması için sözcüğün açılmasından kaynaklanan dosyaya veya n belirtilmemişse standart girişe (dosya tanıtıcı 0) neden olur.

Yönlendirme girişinin genel biçimi şöyledir:

[ n ] < kelime

Yönlendirme Çıkışı

Çıktının yeniden yönlendirilmesi, dosya tanımlayıcıya ( n) yazılması için sözcüğün açılmasından, n belirtilmemişse standart çıkışın (dosya tanımlayıcı 1) çıkmasına sebep olur. Dosya mevcut değilse, oluşturulur; Varsa sıfır büyüklüğüne kesilir.

Yeniden yönlendirmenin genel biçimi şöyledir:

[ n ] > kelime

Yeniden yönlendirme işleci > ise ve sette bulunan noclobber seçeneği etkinleştirildiyse, sözcüğün adı genişleyen sözcüğün varlığı ve düzenli bir dosya olması durumunda yeniden yönlendirme başarısız olur. Yönlendirme operatörü > | veya yönlendirme işleci > ve set yerleşik komutuna noclobber seçeneği etkin değil, word tarafından isimlendirilmiş dosya olsa bile yeniden yönlendirme denenir.

Yönlendirilmiş Çıktının Eklenmesi

Çıktının bu şekilde yeniden yönlendirilmesi, dosya tanımlayıcısına n eklenmesi için sözcüğün açılmasından elde edilen sözcüğün veya n belirtilmemişse standart çıktının (dosya tanımlayıcı 1) ortaya çıkmasına neden olur. Dosya mevcut değilse, oluşturulur.

Çıktı eklemek için genel biçim şöyledir:

[ n ] >> kelime

Standart Çıkışı ve Standart Hatası Yönlendirme

Bash , standart çıktının (dosya tanımlayıcı 1) ve standart hata çıktısının (dosya tanımlayıcı 2), bu yapıyla sözcüğün adı genişleyen dosyaya yeniden yönlendirilmesine izin verir.

Standart çıktı ve standart hatayı yeniden yönlendirmek için iki format vardır:

&> kelime

ve

> & kelime

İki formdan birincisi tercih edilir. Bu semantik olarak eşdeğerdir

> kelime 2 > ve 1

İşte Belgeler

Bu tür yönlendirme, kabuktan, sadece sözcük içeren bir satır (iz bırakmayan boşluklar) görülünceye kadar mevcut kaynaktan gelen girişi okuyacağını bildirir. Bu noktaya kadar okunan tüm satırlar daha sonra bir komut için standart giriş olarak kullanılır.

Buradaki belgelerin formatı:

<< [ - ] kelime burada-belge sınırlayıcı

Sözcük üzerinde hiçbir parametre genişletme, komut değiştirme, aritmetik genişletme veya yol adı genişletme gerçekleştirilmez. Sözcükteki herhangi bir karakter kote edildiğinde, sınırlayıcı kelime üzerinde alıntı kaldırma işleminin sonucudur ve bu belgede bulunan satırlar genişletilmez. Sözcük kote edilmediyse, buradaki belgenin tüm satırları parametre genişletme, komut değiştirme ve aritmetik genişletme işlemine tabi tutulur. İkinci durumda, \ karakter dizisi dikkate alınmaz ve \ , $ ve ` karakterlerini alıntılamak için kullanılmalıdır.

Yönlendirme işleci << - ise , tüm önde gelen sekme karakterleri giriş satırlarından ve sınırlayıcı içeren satırdan sıyrılır. Bu, kabuk betikleri içindeki belgelerin doğal bir tarzda girintili olmasını sağlar.

İşte dizeler

Bu belgenin bir varyantı, format:

<<< kelime

Söz konusu sözcük genişletilir ve standart girdisine komut verilir.

Çoğaltma Dosya Tanımlayıcıları

Yönlendirme operatörü

[ n ] kelime

giriş dosya tanıtıcılarını çoğaltmak için kullanılır. Sözcük bir veya daha fazla basamağa genişlerse, n tarafından belirtilen dosya tanıtıcısı, bu dosya tanıtıcısının bir kopyası olarak oluşturulur. Sözcükteki rakamlar giriş için açık bir dosya tanımlayıcı belirtmezse, bir yönlendirme hatası oluşur. Sözcük değerlendirilirse - dosya tanıtıcı n kapalıdır. N belirtilmemişse, standart giriş (dosya tanıtıcısı 0) kullanılır.

Operatör

[ n ] > ve kelime

Yinelenen çıktı dosya tanıtıcılarına benzer şekilde kullanılır. N belirtilmemişse, standart çıktı (dosya tanımlayıcı 1) kullanılır. Sözcükteki rakamlar, çıktı için açık bir dosya tanıtıcı belirtmezse, bir yönlendirme hatası oluşur. Özel bir durum olarak, n ihmal edilirse ve kelime bir veya daha fazla basamağa genişlemezse, standart çıktı ve standart hata önceden açıklandığı gibi yeniden yönlendirilir.

Dosya Tanımlayıcılarını Taşıma

Yönlendirme operatörü

[ n ] <& basamak -

n tanımlanmamışsa dosya tanımlayıcıyı n dosya tanıtıcısına veya standart girdiye (dosya tanıtıcı 0) taşır. rakam n'ye kopyalandıktan sonra kapatılır.

Benzer şekilde yönlendirme operatörü

[ n ] > & basamak -

n tanımlanmamışsa dosya tanımlayıcıyı n dosya tanıtıcısına veya standart çıktıya (dosya tanımlayıcı 1) taşır.

Okuma ve Yazma için Dosya Tanımlayıcılarını Açma

Yönlendirme operatörü

[ n ] <> kelime

Dosya adı tanımlayıcıda n okuma veya yazma için açılacak sözcüğün genişletilmesi veya n belirtilmemişse dosya tanıtıcı 0 olan dosyaya neden olur. Dosya mevcut değilse, oluşturulur.

Takma adlar

Diğer adlar , basit bir komutun ilk sözcüğü olarak kullanıldığında, bir sözcük için bir dizenin değiştirilmesine izin verir. Kabuk, takma adlar ve unalias yerleşik komutları ile ayarlanabilen ve ayarlanamayan bir adlar listesi içerir (bkz. Aşağıda SHELL BUILTIN COMMANDS ). Her komutun ilk sözcüğü, eğer yoksa, bir takma adı olup olmadığını kontrol eder. Eğer öyleyse, bu kelime diğer adın metni ile değiştirilir. Diğer ad ve değiştirilecek metin, diğer adın içermeyeceği dışında, yukarıda listelenen meta karakterleri de dahil olmak üzere geçerli bir kabuk girdisi içerebilir. Değiştirme metninin ilk sözcüğü diğer adlar için test edildi, ancak genişletilen bir takma adla aynı olan bir sözcük ikinci kez genişletilmez. Bu, örneğin, ls -F'ye ait bir takma ad olabilir ve bash , yedek metni yinelemeli olarak genişletmeye çalışmaz. Diğer ad değerinin son karakteri boşsa , diğer adın ardından sonraki komut sözcüğü de diğer ad genişletme için denetlenir.

Diğer adlar, alias komutuyla oluşturulur ve listelenir ve unalias komutuyla kaldırılır.

Değiştirme metninde argümanların kullanılması için bir mekanizma yoktur. Argümanlara ihtiyaç duyulursa, bir kabuk fonksiyonu kullanılmalıdır (aşağıdaki FONKSİYONLAR'a bakınız).

Ext_aliases kabuk seçeneği shopt kullanılarak ayarlanmadıkça, kabuk etkileşimli değilse, diğer adlar genişletilmez (aşağıdaki SHELL BUILTIN COMMANDS altındaki shopt açıklamasına bakın).

Takma adların tanımı ve kullanımı ile ilgili kurallar biraz kafa karıştırıcıdır. Bash , o satırdaki komutlardan herhangi birini uygulamadan önce her zaman en az bir giriş satırı okur. Diğer adlar, bir komut okunduğunda değil, yürütüldüğünde genişletilir. Bu nedenle, başka bir komutla aynı satırda görünen diğer ad tanımı, bir sonraki giriş satırı okunana kadar etkili olmaz. Bu satırdaki diğer ad tanımını takip eden komutlar yeni takma addan etkilenmez. Bu davranış, işlevler yürütüldüğünde de bir sorundur. Bir işlev tanımı okunduğunda değil, işlev tanımlandığında, diğer adlar genişletilir, çünkü bir işlev tanımı kendi başına bir bileşik komuttur. Sonuç olarak, bir işlevde tanımlanan diğer adlar, bu işlev yürütüldükten sonra kullanılamaz. Güvende olmak için, her zaman takma adlarını ayrı bir satıra koyun ve bileşik komutlarda takma ad kullanmayın.

Neredeyse her amaç için, takma adlar kabuk işlevleri tarafından yerine getirilir.

FONKSİYONLAR

Yukarıda SHELL GRAMMAR altında tanımlandığı gibi tanımlanan bir kabuk işlevi, daha sonra yürütme için bir dizi komut saklar. Bir kabuk işlevinin adı basit bir komut adı olarak kullanıldığında, bu işlev adıyla ilişkili komutların listesi yürütülür. Fonksiyonlar mevcut kabuk bağlamında yürütülür; bunları yorumlamak için yeni bir süreç yaratılmamıştır (bunu bir kabuk betiğinin yürütülmesiyle tezat). Bir işlev yürütüldüğünde, işlevin argümanları yürütülürken konumsal parametreler olur. Özel parametre # değişikliği yansıtacak şekilde güncellenir. Konum parametresi 0 değişmez. FUNCNAME değişkeni, işlev yürütülürken işlevin adına ayarlanır. Kabuk yürütme ortamının diğer tüm yönleri, fonksiyona izleme özniteliği verilmediyse, DEBUG tuzağı (aşağıdaki SHELL BUILTIN KOMUTLARI altında yer alan tuzağın açıklamasına bakın) haricinde, bir işlev ile onun arayıcısı arasında aynıdır ( Aşağıdaki declare yerleşiğinin açıklamasına bakınız).

Fonksiyonun yerel değişkenleri yerel yerleşik komutla bildirilebilir. Normalde, değişkenler ve değerleri, işlev ve arayan arasında paylaşılır.

Yerleşik komut geri dönüşü bir işlevde yürütülürse, işlev tamamlanır ve yürütme, işlev çağrısından sonraki sonraki komutla devam eder. Bir işlev tamamlandığında, konumsal parametreler ve özel parametre # değerleri, işlevin yürütülmesinden önce sahip oldukları değerlere geri yüklenir.

İşlev adları ve tanımları, declare veya typeset yerleşik komutları için -f seçeneği ile listelenebilir. Bildirmek için -F seçeneği veya yazı kümesi yalnızca işlev adlarını listeler. Alt kapaklar, bunları otomatik olarak, dışa aktarma yerleşiklerine -f seçeneği ile tanımlanmış olacak şekilde dışa aktarılabilir.

Fonksiyonlar tekrarlayıcı olabilir. Özyinelemeli çağrıların sayısı üzerinde sınır yoktur.

ARİTMETİK DEĞERLENDİRME

Kabuk, belirli koşullar altında, aritmetik ifadelerin değerlendirilmesine izin verir ( izin verilen komut ve Aritmetik Genişleme'ye bakın ). Değerlendirme, taşma kontrolü olmaksızın sabit genişlikli tamsayılarda yapılır, ancak 0 ile bölünme yakalanır ve bir hata olarak işaretlenir. Operatörler ve bunların öncelikleri ve ilişkilendirmeleri C dilinde aynıdır. Aşağıdaki işleç listesi eşit öncelikli işleçlerin düzeylerine ayrılmıştır. Seviyeler azalan öncelik sırasına göre sıralanmıştır.

id ++ id -

değişken artış sonrası ve azaltma sonrası

++ kimlik - kimliği

değişken ön artış ve ön azalma

- +

unary eksi ve artı

! ~

mantıksal ve bitsel olumsuzlama

**

üstalma

* /%

çarpma, bölme, kalan

+ -

Ekleme çıkarma

<< >>

sol ve sağ bit vardiyaları

<=> = <>

karşılaştırma

==! =

eşitlik ve eşitsizlik

&

bitsel VE

^

bitsel özel VEYA

|

bitsel VEYA

&&

mantıksal VE

||

mantıksal VEYA

expr expr : expr

şartlı değerlendirme

= * = / =% = + = - = << = >> = & = ^ = | =

atama

expr1 , expr2

virgül

Kabuk değişkenlerine işlenen olarak izin verilir; Parametre genişletme ifadesi değerlendirilmeden önce gerçekleştirilir. Bir ifadede, kabuk değişkenleri, parametre genişletme sözdizimini kullanmadan adla da başvuruda bulunabilir. Bir değişkenin değeri, başvurulduğunda aritmetik bir ifade olarak değerlendirilir. Bir kabuk değişkeninin, bir ifadede kullanılacak tamsayı niteliğine sahip olması gerekmez.

Önde gelen 0 olan sabitler sekizlik sayılar olarak yorumlanır. Önde gelen bir 0x veya 0X onaltılık gösterir. Aksi takdirde, sayılar [ taban # ] n şeklini alırlar; burada taban , aritmetik temeli temsil eden 2 ile 64 arasında bir ondalık sayıdır ve n , bu tabandaki bir sayıdır. Temel # atlanırsa, temel 10 kullanılır. 9'dan büyük rakamlar, küçük harflerle, büyük harflerle, @ ve _ ile o sırayla temsil edilir. Baz 36'dan küçük veya eşitse, 10 ve 35 arasındaki sayıları temsil etmek için küçük harf ve büyük harf birbirinin yerine kullanılabilir.

Operatörler öncelik sırasına göre değerlendirilir. Parantez içindeki alt ifadeler önce değerlendirilir ve yukarıdaki öncelik kurallarını geçersiz kılabilir.

DURUM AÇIKLAMALARI

Koşullu ifadeler [[ bileşik komut ve test ve dosya özniteliklerini test etmek ve dize ve aritmetik karşılaştırmalar gerçekleştirmek için yerleşik komutlar ] tarafından kullanılır. İfadeler, aşağıdaki tek veya ikili primerlerden oluşturulur. Primerlerden birine herhangi bir dosya argümanı / dev / fd / n biçimindeyse, dosya tanımlayıcısı n kontrol edilir. Primerlerden birine dosya argümanı / dev / stdin , / dev / stdout veya / dev / stderr dosyalarından biri ise, sırasıyla 0, 1 veya 2 dosya tanıtıcısı kontrol edilir.

-bir dosya

Dosya varsa doğrudur.

-b dosya

Dosya varsa ve bir blok özel dosya ise doğrudur.

-c dosya

Dosya varsa ve bir karakter özel dosyaysa doğrudur.

-d dosya

Dosya varsa ve bir dizin ise doğrudur.

-e dosya

Dosya varsa doğrudur.

-f dosyası

Dosya varsa ve normal bir dosya ise doğrudur.

-g dosya

Dosya varsa ve set-group-id ise doğrudur.

-h dosya

Dosya varsa ve sembolik bir bağlantı ise doğrudur.

-k dosya

Dosya varsa ve `` yapışkan '' biti ayarlanmışsa doğrudur.

-p dosyası

Dosya varsa ve adlandırılmış bir boru (FIFO) ise doğrudur.

-r dosya

Dosya varsa ve okunabilirse doğrudur.

-s dosyası

Dosya varsa ve sıfırdan büyük bir boyuta sahipse doğrudur.

-t fd

Dosya açıklayıcısı fd açıksa ve bir terminale başvurursa doğrudur.

-u dosya

Dosya varsa ve set-user-id biti ayarlanmışsa doğrudur.

-w dosya

Dosya varsa ve yazılabilirse doğrudur.

-x dosya

Dosya varsa ve yürütülebilir ise doğrudur.

-O dosya

Dosya varsa ve etkin kullanıcı kimliğine aitse doğrudur.

-G dosya

Dosya varsa ve etkin grup kimliğine aitse doğrudur.

-L dosya

Dosya varsa ve sembolik bir bağlantı ise doğrudur.

-S dosya

Dosya varsa ve bir soket ise doğrudur.

-N dosya

Dosya varsa ve son okunandan beri değiştirilmişse doğrudur.

dosya1 - nt dosya2

Dosya1 , dosya2'den daha yeni (değişiklik tarihine göre) veya dosya1 varsa ve dosya2 yoksa, doğrudur.

dosya1 - ot dosyası2

Dosya1 dosya2'den büyükse veya dosya2 varsa ve dosya1 yapmıyorsa doğrudur.

file1 -ef dosyası2

Dosya1 ve dosya2 aynı cihaza ve inode numaralarına başvurursa doğrudur.

-o adı

Shell seçeneği optname etkinse true. Aşağıdaki sette bulunan -o seçeneğinin açıklaması altındaki seçenekler listesine bakın.

-z dizesi

Dize uzunluğu sıfır ise doğrudur.

-n string

sicim

Dize uzunluğu sıfır değilse doğrudur.

string1 == string2

Dizeler eşitse doğrudur. = sabit POSIX uyumluluğu için == yerine kullanılabilir.

string1 ! = string2

Dizeler eşit değilse doğrudur.

dize1 < string2

String1 , string2'den önce geçerli yerel dildeki sözlüksel olarak sıralarsa true olur.

string1 > string2

String1 , string2'den sonra şu anki locale'de lexicographically sıralarsa true olur.

arg1 OP arg2

OP , -eq , -ne , -lt , -le , -gt veya -ge öğelerinden biridir . Bu aritmetik ikili işleçler, arg1 , sırasıyla, arg2 değerine eşittir, eşittir, ondan küçüktür, ondan küçüktür veya eşittir, büyüktür veya ona eşittir. Arg1 ve arg2 , pozitif veya negatif tamsayılar olabilir.

BASİT KOMUTANIM GENİŞLEME

Basit bir komut yürütüldüğünde, kabuk soldan sağa doğru aşağıdaki genişletmeleri, atamaları ve yönlendirmeleri gerçekleştirir.

1. Ayrıştırıcının değişken atamaları (komut adından önce gelenler) olarak işaretlediği sözcükler ve yönlendirmeler daha sonra işlenmek üzere kaydedilir.

2. Değişken ödevler veya yönlendirmeler olmayan kelimeler genişletilir. Genişlemeden sonra herhangi bir kelime kalırsa, ilk sözcük komutun adı olarak alınır ve kalan sözcükler argümanlardır.

3. Yönlendirmeler, REDIRECTION altında açıklandığı gibi gerçekleştirilir.

4. Her bir değişken atamasında = metnin ardından, değişkene atanmadan önce tilde genişletme, parametre genişletme, komut ikamesi, aritmetik genişleme ve alıntı çıkarmaya uğrar.

Komut adı sonuçlanmazsa, değişken atamaları mevcut kabuk ortamını etkiler. Aksi takdirde, değişkenler yürütülen komutun çevresine eklenir ve mevcut kabuk ortamını etkilemez. Ödevlerden herhangi biri salt okunur değişkene bir değer atamaya çalışırsa, bir hata oluşur ve komut sıfır olmayan bir durumdan çıkar.

Komut adı sonuçlanmazsa, yönlendirmeler gerçekleştirilir, ancak geçerli kabuk ortamını etkilemez. Bir yönlendirme hatası, komutun sıfır olmayan bir durumla çıkmasına neden olur.

Genişleme işleminden sonra bir komut adı kalırsa, yürütme aşağıda açıklanan şekilde devam eder. Aksi halde, komut çıkar. Genişletmelerden biri bir komut ikamesi içeriyorsa, komutun çıkış durumu, gerçekleştirilen son komut ikamesinin çıkış durumudur. Komut ikamesi yoksa, komut sıfır durumuna geçer.

COMMAND UYGULAMASI

Bir komut kelimelere ayrıldıktan sonra, basit bir komut ve isteğe bağlı argüman listesiyle sonuçlanırsa, aşağıdaki eylemler gerçekleştirilir.

Komut adı eğik çizgi içermiyorsa, kabuk bulmaya çalışır. Bu isimde bir kabuk işlevi varsa, bu işlev FUNCTIONS içinde yukarıda açıklandığı gibi çağrılır. İsim bir işlevle eşleşmezse, kabuk onu kabuk yapıları listesinde arar. Bir eşleşme bulunursa, bu yerleşik çağrılır.

İsim bir kabuk işlevi ya da yerleşik değildir ve eğik çizgi içermiyorsa, bash , PATH'ın her elemanını, bu isimle bir yürütülebilir dosya içeren bir dizin için arar. Bash , yürütülebilir dosyaların tam yol adlarını hatırlamak için bir karma tablo kullanır (aşağıdaki SHELL BUILTIN COMMANDS altındaki karma bölümüne bakın). PATH içindeki dizinlerin tam olarak aranması, yalnızca komut karma tablosunda bulunmuyorsa gerçekleştirilir. Arama başarısız olursa, kabuk bir hata iletisi yazdırır ve 127'lik bir çıkış durumu döndürür.

Arama başarılı olursa veya komut adı bir veya daha fazla eğik çizgi içeriyorsa, kabuk adlandırılan program ayrı bir yürütme ortamında yürütülür. Argüman 0, verilen ada göre ayarlanır ve komutun kalan argümanları, varsa, verilen argümanlara ayarlanır.

Dosya yürütme biçiminde olmadığından ve dosya bir dizin olmadığından bu yürütme başarısız olursa, kabuk komutları içeren bir dosya, bir kabuk betiği olduğu varsayılır. Bunu yapmak için bir alt kabuk ortaya çıkar. Bu alt kabuk kendini yeniden başlatır, böylece komut, ebeveyn tarafından hatırlanan komutların konumlarının ( SHELL BUILTIN COMMANDS'ın altındaki karma şeye bakın) çocuk tarafından tutulduğu istisna olmak üzere, yeni bir kabuk betiği ele almak için çağrılmış gibidir.

Program # ile başlayan bir dosya ise ! İlk satırın geri kalanı program için bir tercüman belirtir. Kabuk, bu çalıştırılabilir formatı kendileri işlemeyen işletim sistemlerinde belirtilen tercümanı çalıştırır. Tercümanın argümanları, programın ilk satırındaki tercüman adının ardından tek bir isteğe bağlı argümanı, ardından programın adını ve ardından komut argümanlarını takip eder.

COMMAND UYGULAMA ORTAMI

Kabuğun aşağıdakilerden oluşan bir yürütme ortamı vardır:

* exec yerleşik olarak sağlanan yönlendirmeler tarafından değiştirildiği gibi, kabuk tarafından çağrılan kabuk açık dosyaları

* cd , pushd veya popd tarafından ayarlanan veya çağrıda kabuk tarafından miras alınan geçerli çalışma dizini

* umask tarafından ayarlanan veya kabuk ebeveynden devralındığı dosya oluşturma modu maskesi

* Mevcut tuzaklar tuzak tarafından ayarlandı

* Değişken atama ile veya ortamdaki kabuğun ana öğesinden set veya miras yoluyla ayarlanan kabuk parametreleri

* Yürütme sırasında tanımlanan veya ortamdaki kabuğun ana öğesinden devralınan kabuk işlevleri

* seçenekler, çağrıda etkinleştirildi (varsayılan olarak veya komut satırı argümanlarıyla) veya

* shopt tarafından etkinleştirilen seçenekler

* diğer adla tanımlanan kabuk takma adları

* Arka plandaki işler, $$ değeri ve $ PPID değeri de dahil olmak üzere çeşitli süreç kimlikleri

Yerleşik veya kabuk işlevinden başka basit bir komut yürütüldüğünde, aşağıdakilerden oluşan ayrı bir yürütme ortamında çağrılır. Aksi belirtilmedikçe, değerler kabuktan miras alınır.

* Kabuğun açık dosyaları, ayrıca komutlara yönlendirmelerle belirtilen tüm değişiklikler ve eklemeler

* Geçerli çalışma dizini

* dosya oluşturma modu maskesi

* Verme için işaretlenen kabuk değişkenleri, komut için dışa aktarılan değişkenlerle birlikte çevreye iletilir

* Kabuk tarafından yakalanan tuzaklar, kabuğun ebeveynden miras alınan değerlere sıfırlanır ve kabuk tarafından yok sayılan tuzaklar göz ardı edilir

Bu ayrı ortamda çağrılan bir komut, kabuğun yürütme ortamını etkileyemez.

Komut ikamesi ve eşzamansız komutlar, kabuk ortamının bir kopyası olan bir alt kabuk ortamında çağrılır, ancak kabuk tarafından yakalanan tuzaklar, kabuğun çağrılmadan üst öğesinden devraldığı değerlere sıfırlanır. Bir boru hattının parçası olarak çağrılan yerleşik komutlar ayrıca bir alt kabuk ortamında da yürütülür. Subshell ortamına yapılan değişiklikler, kabuğun yürütme ortamını etkilemez.

Bir komut bir & tarafından takip ediliyorsa ve iş kontrolü aktif değilse, komut için varsayılan standart girdi boş dosya / dev / null'dur . Aksi takdirde, çağrılan komut, yönlendirme tarafından değiştirilen arama kabuğunun dosya tanıtıcılarını devralır.