无法使ZSH成为默认shell

我试图将ZSH设置为我的默认shell,但它仍然会恢复为bash。

我试过这段代码:

sudo chsh -s $(which zsh) 

我也尝试过:

 sudo chsh -s /bin/zsh 

还尝试了没有sudo的命令。 关于我还需要做什么的任何想法。 从bash中运行ZSH时,它加载并正常工作,但我想将其设置为默认shell。

如果你使用sudo ,它将改变shell不是为你的工作用户而是为root 。 只是用

 chsh -s $(which zsh) 

没有sudo应该工作。

最后, 退出计算机并重新登录。

我在超级用户论坛上发现了这个

打开/ etc / passwd:

 sudo vi /etc/passwd 

找到包含您用户名的行:

 username:x:1634231:100:Your Name:/home/username:/bin/bash 

并用zsh替换bash:

 username:x:1634231:100:Your Name:/home/username:/bin/zsh 

注销并重新登录以使更改生效。

如果zsh不是/ bin / zsh,那么chsh将不起作用。 在Ubuntu上它是/ usr / bin / zsh。 所以做chsh -s /usr/bin/zshchsh -s `which zsh`应该可行。 还需要重新登录桌面会话。

你也可以这样做:

在您喜欢的编辑器中打开您的bashrc文件

 sudo nano ~/.bashrc 

然后添加文件顶部下方的行

 exec zsh 

每次加载终端并运行zsh shell时,它都会执行命令。

奇怪的是,“接受”的答案对我来说并不适用

 chsh: PAM: Authentication failure 

要解决此问题,请编辑/ etc / passwd并确保它指向zsh位置。 (你可以通过运行“which zsh”找到这个)在我的情况下,我的用户名为“webmaster”看起来像这样:

 webmaster:x:1001:1001:webmaster,,,:/var/www/webmaster:/usr/bin/zsh 

我遇到了在当前用户下更改shell权限的问题但下一步帮助我(你应该为你的计算机设置正确的’zsh’文件夹):

 sudo chsh -s /bin/zsh