Greg's Wiki'nin Dash için bash betiklerini uyarlama konusunda bir çok 'bashisms' işaret eden bir yazı var - standart olmayan ancak bash'ın bir parçası olan ekstra özellikler. Bu bashism'lerden kaçınmak, betiğinizi farklı ortamlara daha dost hale getirmeye yardımcı olabilir. Bu özellikle bazı sorularınızı yanıtlar. Örneğin, evet, farklı (örneğin ==
) operatörler var , ancak tüm ortamlarda çalışması gereken standart bir Posix seti var.
Daha ayrıntılı bir okuma için, tüm mermilerin uyması gereken Posix standardına göz atabilirsiniz . Özellikle, "Shell & Utilities" bölümü.
Kabuk farklılıklarından daha zor bulduğum şey komut farklılıkları. Birçok Linux sisteminde GNU vardır find
, ancak taşınabilir bir komut dosyası yazıyorsanız, kendi başınıza güvenmeyin man find
, çünkü BSD ile find
farklı bir özellik kümesine sahip çok sayıda sistem var . Meşgul kutusu için komut dosyaları yazıyorsanız, tamamen farklı nc
s içeren farklı sürümler olduğunu göreceksiniz . Bunlar bir senaryoyu farklı ortamlara dağıtırken beni her zaman yakalayan şeyler.
İyi kabuk komut dosyası uygulamaları hakkında ek okuma için, David Pashley'in blogunda da iyi bir kaynak vardır: Sağlam Bash Kabuk Komut Dosyaları Yazma
Ayrıca, Gilles'in bu sitedeki cevaplarını ve yorumlarını okuduğunuzdan emin olun . Taşınabilir kod kullandığınızdan emin olmak için birçok ipucu var.