Sto eseguendo OS X Yosemite. Ho bisogno di usare array associativi in bash, quindi ho deciso di usare Homebrew per aggiornare bash a 4.x. Ho eseguito i seguenti passaggi:
brew install bash
- Ho poi aggiunto
/usr/local/bin/bash
a/etc/shells
ed ho ripartito per buona misura. chsh -s /usr/local/bin/bash
- Per buona misura, mi sono disconnesso e riconnesso, anche se probabilmente sarebbe stato sufficiente un semplice riavvio del Terminale.
Quando apro Terminal, le cose sembrano andare bene. Se dico di $SHELL --version
avere GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)
. Sfortunatamente, se dico di echo $BASH_VERSION
avere 3.2.53(1)-release
. Inoltre, non riesco a utilizzare una delle funzioni avanzate di 4.x Bash, come array associativi, per esempio, declare -A foo
dice -bash: declare: -A: invalid option
.
È interessante notare, echo $0
dice -bash
.
Cosa sta succedendo qui? Come ottengo i miei array associativi?
which bash
dà /usr/local/bin/bash
.
/etc/paths
ha /usr/local/bin
prima /usr/bin
, quindi non sembra essere questo il problema.