在 MacOSX 中创建 ZSH 默认 Shell

我在 Mac 上安装了 zsh。现在我想把它变成默认的 shell 而不是 Bash。但我似乎遇到了以下错误:

$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
92868 次浏览

三个简单的步骤:

  1. 这将为您提供到 zsh 的路径
  2. 然后 chsh -s /bin/zsh或替换到 zsh 的路径(如果不同)
  3. Restart your machine

On my work MacBook I had to do this:

sudo chsh -s /usr/local/bin/zsh my_user_name

然后,我必须创建一个 .bash_profile文件,使我的终端切换到 z-shell 每次我打开它:

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

最后一个想法是借用 从这里

我可以通过下面的方法来实现这个功能:

  1. 转到系统首选项
  2. 点击“用户和组”
  3. Click the lock to make changes.
  4. 右键单击当前用户-> 高级选项
  5. Change the login shell to /bin/zsh in the dropdown.
  6. 打开一个新的终端并用 echo $SHELL验证

正确的答案应该能解决你的问题:

Chsh:/usr/bin/zsh: 非标准 shell

之所以会出现这种情况,是因为 chsh只接受在/etc/shell 文件中定义的 shell,正如您通过阅读 chsh的手册可以看到的:

chsh will accept the full pathname of any executable file on 但是,如果 shell 不是 列于 /etc/shell 文件。

To solve this problem and make zsh the default shell, you should thus:

$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)

显然,我假设 zsh在你的路径中。例如,如果您选择使用 brew install zsh安装最新的 zsh,这个解决方案也可以工作。

谢谢 ThisIsFlorianK 的评论:

根据您的 shell 设置,您可能会得到一条消息说 /etc/shells: Permission denied。您可以在这里找到关于这个问题的信息 < a href = “ https://askubuntu.com/questions/230476/how-to-Solution-mission- 使用-sudo-with-redirect-in-bash”> 。 要解决这个问题,可以使用以下代码:

$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)