Her unix benzeri işletim sisteminde mevcut olan ve Turing tamamlanmış ve diğer programları çağırabilecek iki programlama ortamı vardır: awk ve sh , Bourne / POSIX kabuk ailesi. AWK, metin işlemeye yöneliktir (daha özel hizmetleri tamamlar), sh programları bir araya getirmek için bir tutkal dili olma yolundadır. Sh olan Linux üzerinde ve Unix dünya çapında evrensel kodlama dili.
POSIX standart sh kendisi ve ilgili araçlardan zorunlu özellikleri tanımlamaktadır. Unix benzeri sistemlerin çoğu POSIX 1003.1-2004 ile uyumludur (aka Single Unix v3, aka Açık Grup Temel Şartnamesi 6); bu standardın en son sürümü POSIX 1003.1-2008'dir (aka Single Unix v4, aka Açık Grup Temel Şartnamesi Sayı 7).
Her Linux ve unix veya Unix benzeri sistemin yolunda Bourne tarzı bir kabuk vardır /bin/sh
ve antik olmayan herhangi bir sistemin POSIX uyumlu bir kabuğu vardır (zaman zaman böceği engeller). Her modern unix benzeri sistem (Linux dahil) shebang'ları destekler , böylece /bin/sh
ilk satırda otomatik olarak komut dosyalarını çalıştırır #!/bin/sh
. sh
Başka bir yerde bulunan POSIX sistemleri var (tipik olarak Unix'e benzemediğini düşünmeyeceğiniz OS'lardaki öykünme katmanları).
Gömülü Linux sistemleri, tüm POSIX özelliklerini uygulamayan soyulmuş bir BusyBox sistemine sahip olabilir. BusyBox, az yer kaplayan sistemleri barındırmak için çok sayıda derleme zamanı seçeneğine sahiptir, bu nedenle önceden ne olacağını bilmek zordur, komut dosyalarınızı belirli bir cihaza göre uyarlamanız gerekir. BusyBox, sh ve çeşitli uygulamaların en yaygın kullanılan küçük ayak izi uygulamasıdır; Karşılaşabileceğiniz bir diğeri de Android'de aşırı derecede azalan kabuk ortamıdır (sonraki sürümler daha az anemiktir).
Sigara gömülü Linux sistemler hemen her zaman ya sahip tire veya bash olarak /bin/sh
. Dash, POSIX özelliklerinden biraz daha fazlasını uygulayan küçük ve hızlı bir kabuktur. Bash, daha fazla özelliğe sahip daha büyük bir kabuktur.
Gömülü olmayan Linux sistemlerinde hemen hemen her zaman Bash yüklü olarak bulunur /bin/bash
. Bu nedenle, gömülü olmayan Linux sistemlerinde taşınabilirlik için bash'ın kullanılabilir olduğunu varsayabilirsiniz. Bash'ın yararlı ek özellikleri arasında diziler, nokta dosyaları ile rahatça başa çıkma kabiliyeti pipestatus
, bir boru hattındaki tüm komutların geri dönüş durumunu elde etme değişkeni, dosya zamanları için ek karşılaştırma işleçleri ve (son sürümlerde) düzenli ifade eşleştirmesi vardır. .
Kabuk programlamanın özelliklerinden biri, sadece sh
programı kullanmamanız, aynı zamanda çok sayıda yardımcı program kullanmanızdır . Linux'taki dosya işleme ve metin işleme araçlarının çoğu GNU coreutil'leridir (gömülü sistemlerde, genellikle BusyBox'tan geliyorlar).
Linux ötesinde taşınabilirliğe ihtiyacınız varsa, en iyi seçeneğiniz POSIX'e bağlı kalmaktır. Diğer unix varyantlarında bash kurulu olmayabilir (bash OSX'deki standart kurulumun bir parçasıdır, ancak * BSD ve çoğu ticari ünitede isteğe bağlı bir pakettir). Neredeyse Linux ve OSX dışındaki tüm unix varyantları (örn. * BSD ve ticari birlikler) en azından pdksh olan Korn kabuğunun bir versiyonuna sahiptir . Bash'ın uygun uzantılarının çoğu ksh'dandır, bu nedenle her ikisinin altında çalışan scriptler yazmak faydalı olabilir, ancak bash veya ksh'ın bilinmeyen bir sistemde nerede olduğunu tespit etmek biraz acı verici olabilir.
Kabuk her şeyi yapamaz. Daha karmaşık bir dile ihtiyacınız varsa, daha yaygın olan iki seçenek Perl ve Python'dur (başka bir şey unix betik dili olarak çok geridedir). Perl, geleneksel kodlama dilidir ve gömülü olmayan Linux sistemlerinden az bir kısmı onu kullanmaktadır, ancak Python (Ubuntu için önerilen kodlama dili olarak kısmen güçlendirilmiştir) temel kazanmaktadır. Linux olmayan dünyada Perl, OSX ve OpenBSD'deki temel kurulumun bir parçasıdır; isteğe bağlıdır ancak çok yaygın olarak FreeBSD'ye kurulur ve isteğe bağlı ancak sıklıkla NetBSD'ye kurulur.
sh
.