Kabuk betiklerinde “BASH-isms” kullanmaktan kaçınma


37

Kabuk komut dosyalarınızı denetleyecek ve kusurları, taşınabilirlik sorunlarını, standart dışı programların geri dönüşsüz kullanımlarını, amortismana tabi program kullanımlarını, vb. Belirten Perl :: Critic benzeri bir araç var mı ?

Bunun set -o posixPOSIX dışı kullanımı devre dışı bırakacağını fark ettim , ancak bu, 1'den başlayan zsh indeksleme kabuk dizileri ve 0'dan bash, ve dizileri desteklemeyen ash gibi bilmek istediklerimi anlatmayacak.

Yanıtlar:


36

Orada checkbashisms . Debian'da, paket bakım araçlarının bir parçası olarak gönderilir .

Komut dosyalarınızı çizgi ve şık altında test edin . Her ikisinde de birkaç POSIX dışı yapı var, ancak komut dosyanız her ikisinde de çalışıyorsa, çoğu yerde çalışması muhtemeldir. (Dikkatli olunca, tipik kabuk senaryolarını test etmenin zor olduğu gibi bir çok köşe durumu vardır.)

Komut dosyalarınızın gömülü Linux platformlarına taşınabilir olmasını istiyorsanız, bunları BusyBox ile test edin . İstediğiniz katıştırılmış sistemin ne kadar küçük olduğuna bağlı olarak BusyBox öğesinin az çok sınırlı olabileceğini unutmayın; Bazı BusyBox kurulumlarında bulunmayan bir özelliğe dayanan komut dosyalarına sahip olmak oldukça normaldir.

Taşınabilir olmamanın yalnızca kabuktan gelmediğine, harici yardımcı programlardan da geldiğine dikkat edin. OpenBSD ve Solaris, POSIX özelliklerine sahip hizmetlere sahip olma eğilimindedir ve çok daha fazla değildir, bu nedenle taşınabilirlik testi için iyidirler.

POSIX teknik özelliklerine ve bu konudaki diğer kaynaklara (özellikle autoconf manual ) atıfta bulunmak isteyeceksiniz ; ancak bu dokümantasyondur, yanlışlıkla bir özellik kullanırsanız yardımcı olmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.