Para iniciantes, se você puder supor que o Bash esteja pré-instalado (que, pelo que sei é o caso em todos os sistemas listados), use o seguinte hashbang para ser compatível:
#!/usr/bin/env bash
isso chama o que quer bash
que esteja configurado, não importa se está dentro /bin
ou /usr/local/bin
.
Enquanto na maioria dos sistemas em uma ampla variedade (incluindo AIX, Solaris, vários tipos de BSD), bash
acabavam em locais diferentes, env
sempre terminavam em /usr/bin/env
. O truque, no entanto, não é meu, mas do autor do Bash Cookbook.
De qualquer forma, sim, o Bash permitirá que você use alguns recursos "modernos" que facilitam sua vida.
Por exemplo, os colchetes duplos:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
enquanto nos dialetos shell tradicionais você teria que recorrer a:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
mas o melhor dos colchetes duplos é que eles permitem expressões regulares para correspondência. O Bash Hackers Wiki lhe dará muitos truques nessa direção.
Você também pode usar expressões bastante convenientes, como $((2**10))
outras expressões aritméticas, alinhadas com a $((expression))
sintaxe.
Usar backticks para subshells é bom, embora um pouco desatualizado. Mas os recursos de aninhamento de $(command ...)
invocações são muito mais convenientes, pois você não precisará escapar de muitas coisas em diferentes níveis de subcamadas.
Essas são apenas algumas das coisas que o Bash fornece sobre a sh
sintaxe POSIX comum tradicional .
Mas se você quiser mais poder no shell (não apenas nos scripts), também dê uma olhada zsh
.
/bin
e/usr/bin
. Consequentemente, provavelmente é melhor usar#!/usr/bin/env <shname>
a portabilidade hoje em dia.