我正在运行 OS X Yosemite。我需要在 bash 中使用关联数组,因此我决定使用 Homebrew 将 bash 升级到 4.x。我执行了以下步骤:
brew install bash
- 然后我添加
/usr/local/bin/bash
并/etc/shells
重新启动以确保万无一失。 chsh -s /usr/local/bin/bash
- 为了保险起见,我注销并重新登录,尽管简单地重新启动终端可能就足够了。
当我打开终端时,一切似乎都很好。如果我说$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 设置的解决方案。