Linux 如何在MacOS Mohave上启用declare-A?

Linux 如何在MacOS Mohave上启用declare-A?,linux,bash,macos,Linux,Bash,Macos,我在Mac上越来越多地使用bash,并发现由于某种原因,declare-A命令不起作用 myname$ declare -A -bash: declare: -A: invalid option declare: usage: declare [-afFirtx] [-p] [name[=value] ...] 表示对关联数组的支持是在版本4中添加到bash的 当我运行bash--version时,我得到了5.0.11 myname$ bash --version GNU bash, vers

我在Mac上越来越多地使用bash,并发现由于某种原因,declare-A命令不起作用

myname$ declare -A
-bash: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
表示对关联数组的支持是在版本4中添加到bash的

当我运行
bash--version
时,我得到了5.0.11

myname$ bash --version
GNU bash, version 5.0.11(1)-release (x86_64-apple-darwin18.6.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
  [1]: https://unix.stackexchange.com/a/428205/379464
myname$bash--version
GNU bash,版本5.0.11(1)-发行版(x86_64-apple-darwin18.6.0)
版权所有(C)2019免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件;您可以自由更改和重新分发它。
在法律允许的范围内,不存在任何担保。
[1]: https://unix.stackexchange.com/a/428205/379464
我按照@chepner的建议运行了bash--version和echo$bash_version,它们给出了不同的答案

bash --version
GNU bash, version 5.0.11(1)-release (x86_64-apple-darwin18.6.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
SEGON207127:gnubin nberkowitz$ echo $BASH_VERSION
3.2.57(1)-release
bash--version
GNU bash,版本5.0.11(1)-发行版(x86_64-apple-darwin18.6.0)
版权所有(C)2019免费软件基金会。
许可证GPLv3+:GNU GPL版本3或更高版本
这是自由软件;您可以自由更改和重新分发它。
在法律允许的范围内,不存在任何担保。
SEGON207127:gnubin nberkowitz$echo$BASH_版本
3.2.57(1)-发布
我已经运行了
brew安装gnutils
,并将其添加到
.bashrc
中的路径中


还有什么我应该试试的吗?

您已经同时安装了两个版本的bash。您需要确保从中调用的
declare-A
运行的版本正确。您是否确定尝试在
bash
5中使用
declare-A
,而不是默认的
/bin/bash
(仅为3.2版,不支持
-A
)?有可能
/bin/bash
仍然是您的登录shell,即使
路径中的第一个
bash
是您的版本5
bash--version
再次运行
bash
,而不是报告当前shell的版本。使用
echo$BASH\u VERSION
确认您的登录shell为3.2。运行
.bashrc
时,shell已经加载,因此您在那里所做的任何操作都无法更改正在使用的版本(除非您让它启动一个完全不同的可执行文件,放弃环境中未反映的每个进程状态;我不建议这种方法)..您真正应该做的是配置您的操作系统以直接运行您真正想要的shell--
/usr/local/bin/bash
而不是
/bin/bash
,f/e--作为您帐户的登录shell。正如其他人之前所说,
bash--version
只是告诉我们路径中的第一个版本,而这与我们无关当前正在使用哪个版本运行。