我在我的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
正确答案应该解决了您的问题:
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
。如果您选择使用 brew install zsh
安装最新的 zsh
,这个解决方案也将适用。
编辑(感谢ThisIsFlorianK的评论):
根据您的shell设置,您可能会收到一个消息,显示 /etc/shells:权限被拒绝
。 您可以在这里找到有关此问题的信息。
为了解决此问题,请改用以下命令:
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
/etc/shells: Permission denied
的问题 ==> 那么请执行以下操作:sudo sh -c "echo $(which zsh) >> /etc/shells"
- ThisIsFlorianKchsh
是默认可用的,也是有原因的。虽然通过大量菜单点击来完成相同的事情本质上没有错,但这不仅不可移植且容易出错,而且会误导用户,隐藏了更改的来源。 - Danielwhich zsh
这将为您提供zsh的路径。chsh -s /bin/zsh
,如果不同,请替换为您的zsh路径。sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
- What Would Be Cool我按照以下步骤让它成功运行:
echo $SHELL
进行验证/usr/local/bin/zsh
中。 因此,在选择Homebrew安装的zsh可执行文件之前,您需要在sudo下编辑/etc/shells
并添加一个/usr/local/bin/zsh
的条目。 - Baldysudo 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
最后一个想法是从这里借鉴的。
chsh -l
输出什么?(如果不行,那/etc/shells
的内容是什么?)你确定这是失败了而不只是警告吗?在那里添加/usr/bin/zsh
能让它工作吗? - Etan Reisner/bin/zsh
出了什么问题? - jxh