在新的 Mac 上,尝试切换到 bash:
alex.mills@alex uta-phd %
alex.mills@alex uta-phd % echo $SHELL
/bin/zsh
alex.mills@alex uta-phd %
alex.mills@alex uta-phd % exec bash
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.
%na%m %1~ %#
%na%m %1~ %# echo $SHELL
/bin/zsh
%n@%m %1~ %#
echo "$SHELL"
一直说我正在使用/bin/zsh
该怎么办?
答案1
你是运行 bash。这就是为什么提示看起来很奇怪。 Bash 和 zsh 都使用PS1
变量作为提示符的主要设置,但它们具有不同的转义序列(bash 中的反斜杠字符,zsh 中的百分号字符,第二个字符具有不同的含义)。
通常该变量应该由 shell 的初始化文件 (或)PS1
设置,而不是导出到环境中(因为它只在一个给定程序中有意义),但许多系统(包括主要的 Linux 发行版)配置和导出都很糟糕。据我所知,MacOS 无法正确地开箱即用导出,但似乎您自己的文件可以(或者可能是与我检查的版本不同的 macOS 版本),并且由于某种原因,macOS 上的系统特别不这样做如果已经设置,则进行更改。.bashrc
.zshrc
PS1
PS1
bashrc
PS1
环境SHELL
变量并不指示您正在运行什么 shell。它表明你是什么外壳想跑步。它告诉想要启动 shell 的程序要运行哪个 shell。仅手动运行另一个 shell 不会改变$SHELL
。
如果您看到 shell 提示符并且不确定正在运行什么 shell,可以使用 进行检查ps
。在所有 Bourne 风格的 shell(sh、ash、bash、ksh、zsh 等)中,$$
代表 shell 的进程 ID,从而ps $$
告诉您当前 shell 是什么程序。在 Fish 中,您会收到一个错误,这表明您正在运行 Fish,因为$$
在那里无效。
答案2
你为什么要努力exec bash
?要启动bash
shell,只需运行bash
.对于充当登录 shell 的 shell,请使用bash -l
。要将您的 shell 永久更改为bash
,请使用chsh
.
答案3
你后来换了外壳吗?如果不是,则调用chsh -s $(which bash)
和echo $SHELL
。