Özet
bash [seçenekler] [dosya]
Telif Hakkı
Bash Telif Hakkı (C) 1989-2005 Free Software Foundation, Inc. firmasına aittir.
Açıklama
bash, standart girdiden veya bir dosyadan okunan komutları yürüten, POSIX ve sh uyumlu bir komut dili yorumlayıcısıdır. Bash ayrıca Korn ve C kabuklarından (ksh ve csh) alınan birçok kullanışlı özelliği bünyesinde barındırır.
Bash'in, IEEE POSIX spesifikasyonunun (IEEE Standart 1003.1) Kabuk ve Yardımcı Programlar bölümünün uyumlu bir gerçeklemesi olması amaçlanmıştır.
Seçenekler
set yerleşik komutunun açıklamasında belgelenen tek karakterlik kabuk seçeneklerine ek olarak, bash başlatıldığında aşağıdaki seçenekleri yorumlar:
-c string: Eğer-cseçeneği varsa, komutlarstringifadesinden okunur. Eğerstringifadesinden sonra argümanlar varsa, bunlar$0'dan başlayarak konumsal parametrelere atanır.-i: Eğer-iseçeneği varsa, kabuk etkileşimli (interactive) modda çalıştırılır.-l: Bash'in bir oturum açma kabuğu (login shell) olarak başlatılmış gibi davranmasını sağlar.-r: Eğer-rseçeneği varsa, kabuk kısıtlı hale gelir (bkz.Kısıtlı Kabukbölümü).-s: Eğer-sseçeneği varsa veya seçenek işlemleri tamamlandıktan sonra geriye hiçbir argüman kalmamışsa, komutlar standart girdiden okunur.-D: Önünde$işareti bulunan tüm çift tırnaklı dizgilerin bir listesi standart çıktıya yazdırılır. Bunlar dil çevirisine tabi olan dizgilerdir.[-+]O [shopt_seçeneği]:shopt_seçeneği,shoptyerleşik komutu tarafından kabul edilen kabuk seçeneklerinden biridir.-Obu seçeneği ayarlar;+Oise onu kaldırır.--: Seçeneklerin sonunu belirtir ve daha sonraki seçenek işlemlerini devre dışı bırakır.
Çok Karakterli Seçenekler
Aşağıdaki seçeneklerin tanınabilmesi için komut satırında tek karakterlik seçeneklerden önce gelmesi gerekir:
--debugger: Kabuk başlamadan önce hata ayıklayıcı profilinin yürütülmesini ayarlar. Genişletilmiş hata ayıklama modunu etkinleştirir.--dump-po-strings:-Dseçeneğine eşdeğerdir, ancak çıktı GNU gettextpo(taşınabilir nesne) dosya biçimindedir.--dump-strings:-Dseçeneğine eşdeğerdir.--help: Standart çıktıya bir kullanım mesajı yazdırır ve başarıyla çıkar.--init-file dosya/--rcfile dosya: Kabuk etkileşimli ise, standart kişisel başlatma dosyası olan~/.bashrcyerine belirtilen dosyadan komutları yürütür.--login:-lseçeneğine eşdeğerdir.--noediting: Kabuk etkileşimli olduğunda komut satırlarını okumak için GNU readline kütüphanesini kullanmaz.--noprofile: Ne sistem genelindeki/etc/profilene de kişisel başlatma dosyaları olan~/.bash_profile,~/.bash_loginveya~/.profiledosyalarını okur.--norc: Kabuk etkileşimli olsa bile kişisel başlatma dosyası olan~/.bashrcdosyasını okuyup yürütmez.--posix: Varsayılan işleyişin POSIX standardından farklı olduğu durumlarda bash'in davranışını standartla eşleşecek şekilde değiştirir (posixmodu).--restricted: Kabuk kısıtlı hale gelir.--verbose:-vseçeneğine eşdeğerdir (komutları okundukça yazdırır).--version: Bubashörneğinin sürüm bilgilerini gösterir ve başarıyla çıkar.
Argümanlar
Seçenek işlemlerinden sonra geriye argümanlar kalırsa ve ne -c ne de -s seçeneği belirtilmemişse, ilk argümanın kabuk komutlarını içeren bir dosyanın adı olduğu kabul edilir. bash bu şekilde başlatılırsa, $0 değişkeni dosya adına ayarlanır ve konumsal parametreler kalan argümanlara ayarlanır. bash bu dosyadan komutları okur, yürütür ve çıkar.
Başlatma
- Oturum Açma Kabuğu (
login shell): Sıfırıncı argümanının ilk karakteri-olan veya--loginseçeneği ile başlatılan bir kabuktur. - Etkileşimli Kabuk (
interactive shell): Seçenek dışı argümanlar ve-cseçeneği olmadan başlatılan, standart girdisi ile standart hatasının her ikisi de terminallere bağlı olan kabuktur.
Dosya Yürütme Sırası
Etkileşimli Oturum Açma Kabuğu:
- Önce
/etc/profiledosyasındaki komutları yürütür. - Ardından sırasıyla
~/.bash_profile,~/.bash_loginve~/.profiledosyalarını arar ve mevcut/okunabilir olan ilk dosyayı yürütür. - Çıkışta (
logout), mevcutsa~/.bash_logoutdosyasını yürütür.
- Önce
Oturum Açma Olmayan Etkileşimli Kabuk:
- Mevcutsa
~/.bashrcdosyasındaki komutları yürütür.
- Mevcutsa
Etkileşimsiz Kabuk (örn. Kabuk Betiği):
- Ortamdaki
BASH_ENVdeğişkenini arar, eğer mevcutsa bu dosyadaki komutları yürütür.
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi- Ortamdaki
[!NOTE]
basheğershadıyla çağrılırsa, POSIX standartlarına uyum sağlamak amacıyla eskishbaşlatma davranışlarını taklit eder: etkileşimli modda yalnızcaENVdeğişkenini okur,~/.bashrcdosyasını es geçer.
Tanımlamalar
- boşluk (blank): Bir boşluk (space) veya sekme (tab) karakteri.
- sözcük (word): Kabuk tarafından tek bir birim olarak kabul edilen karakter dizisi.
- ad (name): Yalnızca alfanümerik karakterlerden ve alt çizgilerden oluşan ve bir harf veya alt çizgiyle başlayan sözcük (tanımlayıcı).
- meta karakter (metacharacter): Tırnak içine alınmadığında sözcükleri ayıran karakterler:
| & ; ( ) < > space tab - denetim işleci (control operator):
|| & && ; ;; ( ) | <yeni satır>
Ayrılmış Sözcükler
Ayrılmış sözcükler (reserved words), kabuk için özel anlamı olan kelimelerdir:
! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]
Kabuk Dil Bilgisi
Basit Komutlar
Basit bir komut (simple command), isteğe bağlı bir dizi değişken atamasını takip eden, boşluklarla ayrılmış sözcükler ve yönlendirmelerden oluşan ve bir denetim işleciyle sonlandırılan dizidir. Çıkış durumu, yürütülen komutun çıkış durumudur.
Boru Hatları
Bir boru hattı (pipeline), | veya |& denetim işleçlerinden biriyle ayrılmış komutlar dizisidir:
[time [-p]] [!] komut [ | veya |& komut2 ... ]
|&kullanılması, standart hatanın da bir boru aracılığıyla sonraki komutun standart girdisine bağlanmasını sağlar (2>&1 |yönlendirmesinin kısaltmasıdır).!operatörü, boru hattının çıkış durumunun mantıksal olumsuzlamasını alır.
Komut Dizileri
Bir komut dizisi (lists), ;, &, && veya || ile ayrılmış boru hatlarıdır.
&&(VE):komut1 && komut2ifadesindekomut2yalnızcakomut1başarılı olursa (0çıkarsa) yürütülür.||(VEYA):komut1 || komut2ifadesindekomut2yalnızcakomut1başarısız olursa (sıfır dışı çıkarsa) yürütülür.
Bileşik Komutlar
(liste):listekomutları bir alt kabuk (subshell) ortamında yürütülür.{ liste; }:listekomutları geçerli kabuk ortamında yürütülür.((ifade)): Aritmetik ifadeyi değerlendirir. Değer sıfır dışı ise durum0, aksi halde1'dir.[[ ifade ]]: Koşullu ifadeyi değerlendirir. Sözcük bölme ve dosya adı genişletmesi gerçekleştirilmez.
Genişletme (Expansion)
Genişletme işlemleri komut satırı kelimelere bölündükten sonra sırasıyla şu sırada uygulanır:
- Küme Genişletme (Brace Expansion):
a{d,c,b}e->ade ace abe. - Tilde Genişletme (Tilde Expansion):
~->HOMEdizini,~+->PWD. - Parametre ve Değişken Genişletme:
${parametre:-sözcük}(varsayılan değer),${#parametre}(uzunluk),${parametre#desen}(ön eki kaldır). - Aritmetik Genişletme:
$((ifade))aritmetik değerlendirme yapar. - Komut Değiştirme:
$(komut)veya\komut`` standart çıktıyı komutun yerine yerleştirir. - Süreç Değiştirme (Process Substitution):
<(komut)veya>(komut). - Kelime Bölme (Word Splitting):
IFSkarakterlerine göre kelimelere bölme gerçekleştirilir. - Dosya Yolu Genişletme:
*,?ve[karakterlerini kullanarak dosya arama.
Kısıtlı Kabuk (Restricted Shell)
Bash rbash adıyla başlatılırsa veya -r / --restricted seçeneğiyle çağrılırsa kısıtlı hale gelir.
[!WARNING] Kısıtlı kabukta aşağıdaki işlemlere izin verilmez:
cdkomutuyla dizin değiştirmek.SHELL,PATH,ENVveyaBASH_ENVdeğişkenlerini değiştirmek veya silmek (unset)./karakteri içeren komut adlarını yürütmek (doğrudan dosya yoluyla komut çalıştırmak).. (source)yerleşik komutuna argüman olarak eğik çizgi içeren bir dosya adı belirtmek.- Yönlendirme işleçleri (
>,>|,<>,>&,&>ve>>) kullanarak çıktıyı yönlendirmek.execkullanarak kabuk sürecini başka bir komutla değiştirmek.set +rveyaset +o restrictedkullanarak kısıtlı modu devre dışı bırakmak.
Kabuk Yerleşik Komutları (Shell Builtin Commands)
Sık kullanılan bazı kabuk yerleşik komutları şunlardır:
alias [ad[=değer] ...]: Kabukta takma ad (alias) tanımlar.bg [iş_belirteci ...]: Askıya alınmış işleri arka planda yürütmeye devam ettirir.cd [-L|[-P [-e]]] [dizin]: Geçerli çalışma dizinini değiştirir.declare [-aAfFgilrtux] [-p] [ad[=değer] ...]: Değişkenleri ve özniteliklerini tanımlar.echo [-neE] [argüman ...]: Argümanları çıktıya yazar.exec [-cl] [-a ad] [komut]: Kabuk sürecini doğrudan belirtilen komutla değiştirir.fg [iş_belirteci]: Arka plandaki bir işi ön plana getirir.jobs [-lnprs] [iş_belirteci ...]: Etkin işleri listeler.read [-ers] [-a dizi] [-p istem] [ad ...]: Standart girdiden bir satır okur.set [--abefhkmnptuvxBCEHPT]: Kabuk seçeneklerini ve konumsal parametreleri ayarlar.test ifade/[ ifade ]: Koşullu ifade değerlendirmesi gerçekleştirir.ulimit [-SHacdefilmnpqrstuvx [limit]]: Kaynak sınırlarını yönetir.umask [-p] [-S] [mod]: Dosya oluşturma maskesini ayarlar.unalias [-a] [ad ...]: Takma adları kaldırır.unset [-fv] [ad ...]: Değişkenleri veya fonksiyonları siler.wait [n ...]: Belirtilen arka plan süreçlerinin veya işlerin tamamlanmasını bekler.
Örnekler
Aşağıdaki örnekler kabukta (shell) çalıştırılabilecek şekilde gösterilmiştir:
Basit bir Bash betiğini çalıştırma:
bash betik.shKomut satırından doğrudan tek bir komut çalıştırma:
bash -c "echo 'Merhaba Dunya'"Özel bir başlatma dosyası (
rcfile) belirterek etkileşimli kabuk açma:bash --rcfile ~/.ozel_bashrc -iHata ayıklama (debug) moduyla bir betiği adım adım izleme:
bash -x betik.shPOSIX uyumluluk modunda çalıştırma:
bash --posix
Ayrıca Bakınız
sh(1), csh(1), zsh(1), dash(1), echo(1), alias(1), clear(1), env(1)
Dosyalar
/bin/bash: bash yürütülebilir dosyası/etc/profile: Oturum açma kabukları için yürütülen sistem genelindeki başlatma dosyası~/.bash_profile: Oturum açma kabukları için yürütülen kişisel başlatma dosyası~/.bashrc: Etkileşimli kabuk başına bireysel başlangıç dosyası~/.bash_logout: Oturum açma kabuğundan çıkıldığında yürütülen bireysel oturum kapatma dosyası~/.inputrc: Bireysel readline başlatma dosyası