thr*_*ing 4 bash shell command-line fish macos
我按照Fish 文档中的步骤将 macOS Catalina (10.15.1) 上的默认 shell 简要更改为 Fish 。
首先,我执行了> 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.
Run Code Online (Sandbox Code Playgroud)
在将 shell 更改为 Fish 然后再更改回 Bash 之前,不会出现此错误,并且在将 shell 更改回 Bash 之前,我没有编辑任何 .bashrc 或 .bash_profile 文件。有人可以帮我解决这个问题吗?
macOS Catalina 附带的 /bin/bash 非常旧(版本 3.2.57)并且不支持declare -A
. 想必您一直在使用安装为/usr/local/bin/bash的 Homebrew 版本,它支持declare -A
. 因此,假设您有/usr/local/bin/bash只需确保/etc/shells中存在该文件,然后运行chpass -s /usr/local/bin/bash
.
PS,您只需键入不带任何选项的内容即可查看当前的用户配置文件,其中包括您的默认 shell chpass
。