Yeni başlayanlar için, Bash'in önceden kurulu olduğu varsayımını yapabiliyorsanız (ki bence listelediğiniz tüm sistemlerde böyledir), uyumlu olmak için aşağıdaki hashbang'ı kullanın:
#!/usr/bin/env bash
bu bash
, içinde /bin
veya dışında olsun, yapılandırılacak her şeyi başlatır /usr/local/bin
.
Geniş bir aralıktaki çoğu sistemde (AIX, Solaris, çeşitli BSD lezzetleri dahil), bash
farklı yerlerde env
sona erdi , her zaman sonuçlandı /usr/bin/env
. Ancak hile benim değil Bash Yemek Kitabı'nın yazarı.
Her neyse, evet Bash hayatınızı kolaylaştıran bazı "modern" özellikleri kullanmanızı sağlar.
Örneğin çift parantez:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
oysa geleneksel kabuk ağızlarında:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
ancak çift parantez ile ilgili en iyi şey, eşleşme için düzenli ifadelere izin vermesidir. Bash Hackerlar Wiki o yönde size birçok hileler verecektir.
Ayrıca $((2**10))
, $((expression))
sözdizimi ile aynı olan oldukça uygun ifadeleri veya diğer aritmetik ifadeleri kullanabilirsiniz .
Subshells için backticks kullanmak biraz modası geçmiş olsa da iyidir. Ancak, $(command ...)
farklı alt kabuk seviyelerinde birçok şeyden kaçmak zorunda kalmayacağınız için , invokasyonların yuvalama özellikleri çok daha uygundur.
Bunlar, Bash'in geleneksel ortak POSIX sh
sözdizimi üzerinde verdiği birkaç şeydir .
Ancak kabukta daha fazla güç istiyorsanız (sadece komut dosyalarında değil), ayrıca bir göz atın zsh
.
/bin
ve/usr/bin
. Sonuç olarak,#!/usr/bin/env <shname>
bu günlerde taşınabilirlik için kullanmak muhtemelen daha iyidir .