Per i principianti, se puoi supporre che Bash sia preinstallato (il che, per quanto ne so, è il caso su tutti i sistemi che elenchi), usa il seguente hashbang per essere compatibile:
#!/usr/bin/env bash
questo invoca qualunque bash
cosa sia configurata, indipendentemente dal fatto che sia dentro /bin
o /usr/local/bin
.
Mentre sulla maggior parte dei sistemi in una vasta gamma (inclusi AIX, Solaris, diversi tipi di BSD), sono bash
finiti in posizioni diverse, env
finendo sempre in /usr/bin/env
. Il trucco, tuttavia, non è mio ma dell'autore del Bash Cookbook.
Comunque, sì, Bash ti permetterebbe di utilizzare alcune funzionalità "moderne" che ti semplificano la vita.
Ad esempio le doppie parentesi:
[[ -f "/etc/debian_version" ]] && echo "This is a Debian flavor"
mentre nei dialetti shell tradizionali dovresti ricorrere a:
test -f "/etc/debian_version" && echo "This is a Debian flavor"
ma la cosa migliore delle doppie parentesi è che consentono espressioni regolari per la corrispondenza. Il Wiki di Bash Hackers ti darà molti trucchi in quella direzione.
Puoi anche usare espressioni abbastanza comode come $((2**10))
o altre espressioni aritmetiche in linea con la $((expression))
sintassi.
L'uso dei backtick per i subshells va bene, anche se un po 'obsoleto. Ma le capacità di nidificazione delle $(command ...)
invocazioni sono molto più convenienti in quanto non dovrete sfuggire a molte cose a diversi livelli di subshell.
Queste sono solo alcune delle cose che Bash ti offre sulla tradizionale sh
sintassi POSIX comune .
Ma se vuoi più potenza sulla shell (non solo negli script), dai un'occhiata anche a zsh
.
/bin
e/usr/bin
. Di conseguenza, è probabilmente meglio utilizzare#!/usr/bin/env <shname>
per la portabilità in questi giorni.