如何将默认 shell 更改为 ZSH - chsh 说“无效的 shell”

Zac*_*ell 43 shell users login zsh

我在我的虚拟机上安装了 ZSH,我从源代码编译它。ZSH 的位置是/usr/local/bin/zsh我运行chsh -s /usr/local/bin/zsh它时的输出chsh: /usr/local/bin/zsh is an invalid shell。我也用 sudo 尝试过这个。我怎样才能改变这个?

小智 59

将 zsh 添加到/etc/shells

command -v zsh | sudo tee -a /etc/shells
Run Code Online (Sandbox Code Playgroud)

您现在可以使用 chsh 将 zsh 设置为 shell:

sudo chsh -s "$(command -v zsh)" "${USER}"
Run Code Online (Sandbox Code Playgroud)

请参阅此文档:更改登录外壳


小智 8

您需要添加/usr/local/bin/zsh/etc/shells.


小智 6

首先,检查是否zsh被列为有效的 shell

cat /etc/shells
Run Code Online (Sandbox Code Playgroud)

如果zsh未列出,请安装它。例如,如果您使用apt

sudo apt-get install zsh
Run Code Online (Sandbox Code Playgroud)

做,再次执行步骤 1 并查看zsh. 就我而言,/usr/bin/zsh/usr/zsh都列出了。正如@Stéphane Chazelas 在评论中提到的,如果您想从头开始编译和安装 shell,请务必在/etc/shells.

使用更改外壳

chsh -s /usr/bin/zsh
Run Code Online (Sandbox Code Playgroud)

手册页

-s, --shell SHELL用户的新登录 shell 的名称。将此字段设置为空白会导致系统选择默认登录 shell。

注销并重新登录。