/bin/bash shell(macOS)在 shell 启动时抛出 `-bash: decla: -A: invalid option` 错误消息

/bin/bash shell(macOS)在 shell 启动时抛出 `-bash: decla: -A: invalid option` 错误消息

我按照以下步骤将 macOS Catalina (10.15.1) 上的默认 shell 短暂地更改为 FishFish 的文档

首先,我执行了,> echo /usr/local/bin/fish | sudo tee -a /etc/shells然后执行了> chsh -s /usr/local/bin/fish。之后,我意识到我只需要使用其中一个命令,而不是两个,但是算了。木已成舟。

后来,我决定切换回 bash,所以我反向运行了这些命令(根据 Fish 的恢复说明)首先,> echo /bin/bash | sudo tee -a /etc/shells然后> chsh -s /bin/bash

当我使用 Bash 重新加载 shell 时,收到以下错误。

-bash: declare: -A: invalid option
declare: usage: declare [-afFirtx] [-p] [name[=value] ...]
-bash: complete: -D: invalid option
complete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.

在将 shell 更改为 Fish 然后又改回 Bash 之前,没有出现此错误,而且在将 shell 改回 Bash 之前,我没有编辑任何 .bashrc 或 .bash_profile 文件。有人能帮我解决这个问题吗?

答案1

/bin/bashmacOS Catalina 附带的版本非常旧(版本 3.2.57),并且不支持declare -A。大概你一直在使用 Homebrew 版本安装在 /usr/local/bin/bash它确实支持declare -A。假设你有一个在 /usr/local/bin/bash只需确保存在于/etc/shells然后运行chpass -s /usr/local/bin/bash

chpassPS,您只需输入不带选项的文字,即可查看当前的用户配置文件,其中包括您的默认 shell 。

相关内容