我在我的MAC上安装了ZSH。现在我想把它变成默认的shell而不是BASH。但我似乎遇到了以下错误
Harshas-MacBook-Pro:~ harshamv$ echo $SHELL
/bin/bash
Harshas-MacBook-Pro:~ harshamv$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
答案 0 :(得分:124)
正确的答案应该解决您的问题:
chsh:/ usr / bin / zsh:非标准shell
这种情况的原因是因为chsh
只接受文件/ etc / shells中定义的shell,您可以通过阅读chsh
的手册看到:
chsh将接受任何可执行文件的完整路径名 系统。但是,如果shell不是,它将发出警告 列在 / etc / shells文件。
要解决此问题并将zsh设为默认shell,您应该:
$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
显然,我认为zsh
在你的道路上。例如,如果您选择使用zsh
安装最新的brew install zsh
,此解决方案也会有效。
编辑 (感谢ThisIsFlorianK发表评论):
根据您的shell设置,您可能会收到一条消息/etc/shells: Permission denied
。您可以找到有关此问题的信息here.
要解决此问题,请改用以下内容:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
答案 1 :(得分:69)
which zsh
这为您提供了zsh的路径chsh -s /bin/zsh
或替换zsh的路径(如果不同)答案 2 :(得分:37)
我能够通过以下方式实现这一目标:
echo $SHELL
答案 3 :(得分:5)
在我的MacBook工作中,我必须这样做:
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
最后一个想法是借用from here。