Для начала, если вы можете сделать предположение, что Bash предустановлен (что, насколько мне известно, имеет место во всех перечисленных вами системах), используйте следующий hashbang для совместимости:
#!/usr/bin/env bash
это вызывает все, что bashпроисходит, независимо от того, находится он в /binили /usr/local/bin.
Хотя на большинстве систем в широком диапазоне (включая AIX, Solaris, несколько разновидностей BSD) bash, envоказывались в разных местах, всегда оказывались /usr/bin/env. Уловка, однако, не моя, но от автора Поваренной книги Bash.
В любом случае, да, Bash позволит вам использовать некоторые «современные» функции, которые сделают вашу жизнь проще.
Например двойные скобки:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
в то время как в традиционных диалектах оболочки вам придется прибегнуть к:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
но лучшее в двойных скобках то, что они позволяют регулярные выражения для сопоставления. Bash Hackers Wiki даст вам много трюков в этом направлении.
Вы также можете использовать довольно удобные выражения, такие как $((2**10))или другие арифметические выражения, встроенные в $((expression))синтаксис.
Использование backticks для подоболочек хорошо, хотя и немного устарело. Но вложенные возможности $(command ...)вызовов гораздо удобнее, так как вам не придется избегать многих вещей на разных уровнях подоболочек.
Это всего лишь несколько вещей, которые Bash дает вам по сравнению с традиционным shсинтаксисом POSIX .
Но если вы хотите больше возможностей для оболочки (не только в сценариях), также посмотрите zsh.
/binи/usr/bin. В результате, в#!/usr/bin/env <shname>наши дни , вероятно, лучше использовать для мобильности.