使用 Homebrew 升级 Yosemite 中的 bash 时出现奇怪问题

使用 Homebrew 升级 Yosemite 中的 bash 时出现奇怪问题

我正在运行 OS X Yosemite。我需要在 bash 中使用关联数组,因此我决定使用 Homebrew 将 bash 升级到 4.x。我执行了以下步骤:

  1. brew install bash
  2. 然后我添加/usr/local/bin/bash/etc/shells重新启动以确保万无一失。
  3. chsh -s /usr/local/bin/bash
  4. 为了保险起见,我注销并重新登录,尽管简单地重新启动终端可能就足够了。

当我打开终端时,一切似乎都很好。如果我说$SHELL --version我得到GNU bash, version 4.3.30(1)-release (x86_64-apple-darwin14.0.0)。不幸的是,如果我说echo $BASH_VERSION我得到3.2.53(1)-release。此外,我似乎无法使用 Bash 4.x 的任何高级功能,例如关联数组,例如declare -A foo-bash: declare: -A: invalid option

有趣的是,echo $0-bash

这是怎么回事?我该如何获取关联数组?

答案1

我遇到了类似的问题,结果发现是我的#!路径出了问题。请检查以确保你没有将其指向:

#!/bin/bash

但在:

#!/usr/local/bin/bash

#!/bin/bash如果您想继续在顶部使用,您可能需要这样做:

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

更新:

如果你之前$PATH有过,那么你可以这样做:/url/local/bin/bin/usr/bin

#!/usr/bin/env bash

寻找不太特定于 OS X/Homebrew 设置的解决方案。

相关内容