我在我的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
Run Code Online (Sandbox Code Playgroud)
dan*_*gom 173
正确的答案应该解决你的问题:
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)
Run Code Online (Sandbox Code Playgroud)
显然,我认为这zsh是你的道路.例如,如果您选择安装最新版本zsh,此解决方案也可以使用brew install zsh.
编辑(感谢ThisIsFlorianK的评论):
根据您的shell设置,您可能会收到一条消息/etc/shells: Permission denied.您可以在此处找到有关此问题的信息.
要解决此问题,请使用以下代码:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
Run Code Online (Sandbox Code Playgroud)
Que*_*rez 76
which zsh这为您提供了zsh的路径chsh -s /bin/zsh或者如果不同则替换zsh的路径Nat*_*son 44
通过执行以下操作,我能够实现此目的:
echo $SHELL在工作MacBook上,我必须这样做:
sudo chsh -s /usr/local/bin/zsh my_user_name
Run Code Online (Sandbox Code Playgroud)
然后,我必须创建一个.bash_profile文件,以便每次打开终端时都将其切换到z-shell:
touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)
最后的想法是从这里借来的。