Belirtildiği gibi, bash
çoğu dağıtım için varsayılan kurulumda yaygın olarak bulunur. Komut dosyanız güvenerek en büyük kullanıcı tabanına erişemez zsh
.
Komut dosyanızı tasarlamadan önce yanıtlanması gereken önemli bir soru " Bir komut dosyasının hangi kabuğu çalıştırdığı neden önemlidir? "
Farklı mermiler, farklı sözdizimi kullanır veya diğer mermiler tarafından desteklenmeyen ilave mermi işlevleri sunar. "Genel linux son kullanıcı dünyası" için bir komut dosyası yazmak için, komut dosyanızın belirli bir kabuk ortamına dayanan sözdizimi veya kabuk işlevlerini kullanıp kullanmadığını belirleyin.
Örneğin, bash
kabukdash
, Bourne kabuğu tarafından desteklenmeyen bazı açılımları veya /bin/sh
kullanıcının sisteminde ne varsa onu destekler .
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Feb 19 2014 /bin/sh -> dash
Yürütme deneyin echo {1..10}
ile /bin/sh
karşılaştırıldığında /bin/bash
ve çok farklı çıktı alırsınız.
Aynı şey zsh
, çoğu bash
sözdizimini desteklerken, bash
kabuk tarafından desteklenmeyen ek genişleme ve sözdizimi de sunmakta . Özel örnekler için mermileri karşılaştıran tablolara bakınız .
Potansiyel kullanıcı tabanınızı bash
, çağrıldığında çalışan komut dosyalarına bağlı kalarak daha da genişletebilirsiniz #!/bin/sh -u
. Bununla birlikte, bu şu soruyu sormak için bir başka önemli soruyu ortaya çıkarıyor: " Daha fazla taşınabilirlik karşılığında ne feda ediliyor? "
Güvenlik endişeleri, işlevsellik, verimlilik veya diğer herhangi bir şey ile ilgili farkınızın senaryo için öncelikli olup olmadığını feda etmeye değeceğini belirleyin. Daha fazla ortamda çalıştığı için bilinen bir güvenlik açığına sahip bir komut dosyasının yaygın şekilde kullanılmasını istemeyebilirsiniz.
Komut kabukları karşılaştırılırkenbash
bu komut için bu komut için çok sayıda komut dosyası yazılır . Komut dosyanızı çalıştırandan veya bir kabuk ortamına özel olan herhangi bir sözdiziminden daha çok kişi çalıştırabilir .zsh
Ayrıca, nihayetinde kullanıcının komut dosyasını nasıl çalıştığını kontrol edemeyeceğinizi unutmayın (ayrıca komut dosyalarını farklı kabuklarda hata ayıklamak için de yararlıdır ):
Bir kabuk betiğini okumak için bir kabuk kullanıyorsanız (“sh scriptname”), doğrudan yürütmek yerine (“./scriptname”), kabuk komut dosyasının başlangıcındaki tüm yorumları yorum olarak değerlendirir. Özellikle, komut dosyasını çalıştırırken kullanılacak tercümanı belirten yorum (“#! / Bin / sh -u”), bu tercümanın yanında listelenen seçeneklerin tümü gibi göz ardı edilir.
Dolayısıyla, bu konuda yapabileceğiniz en iyi şey, komut dosyalarınızı taşınabilir yapmaktır, nasıl çalıştığı konusunda büyük bir fedakarlık olmadığı sürece.
Ayrıca Bash kodlama kurallarını da görebilirsiniz - Yığın Taşması .
zsh
popüler olabilirken, diğerleri (bankacılık sektörü) neredeyse hiç duyulmamıştır. Bu konuda uygun bir tavsiyeye ihtiyacınız olursa daha fazla bilgi vermeniz gerektiğini düşünüyorum.