Strano problema con l'aggiornamento di bash in Yosemite usando Homebrew


4

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:

  1. brew install bash
  2. Ho poi aggiunto /usr/local/bin/basha /etc/shellsed ho ripartito per buona misura.
  3. chsh -s /usr/local/bin/bash
  4. 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 --versionavere GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0). Sfortunatamente, se dico di echo $BASH_VERSIONavere 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 foodice -bash: declare: -A: invalid option.

È interessante notare, echo $0dice -bash.

Cosa sta succedendo qui? Come ottengo i miei array associativi?


Cosa dice quale bash ?
Mirko Ebert,


@ tfb785 which bash/usr/local/bin/bash.
Gregory Higley,

@ tfb785 Inoltre, /etc/pathsha /usr/local/binprima /usr/bin, quindi non sembra essere questo il problema.
Gregory Higley,

Risposte:


4

Ho avuto un problema simile, e si è rivelato essere con il mio #!percorso. Controlla per assicurarti di non puntarlo a:

#!/bin/bash

ma a:

#!/usr/local/bin/bash

Se si desidera continuare a utilizzare #!/bin/bashin alto, è possibile invece fare:

sudo ln -s /usr/local/bin/bash /bin/bash

Aggiornare:

Se il tuo $PATHha /url/local/bindavanti /bine /usr/binbasta si può fare:

#!/usr/bin/env bash

per una soluzione meno specifica per l'installazione di OS X / Homebrew.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.