如何使 ZSH 成为默认 shell?

Tom*_*Tom 237 command-line bash zsh

我正在尝试将 ZSH 设置为我的默认 shell,但是它不断恢复为 bash。

我试过这个代码:

sudo chsh -s $(which zsh)
Run Code Online (Sandbox Code Playgroud)

我也试过:

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

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

Flo*_*sch 378

只是使用chsh

chsh -s $(which zsh)
Run Code Online (Sandbox Code Playgroud)

没有 sudo应该工作。如果您使用sudo它,它将更改不是为您的工作用户而是为root用户的 shell

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

故障排除:

  • 我有同样的问题,答案没有解决它 (31认同)
  • 注意:我必须重新启动系统才能生效。 (29认同)
  • 你也可以运行 sudo chsh -s /bin/zsh userName (16认同)
  • 需要在 Linut Mint 19.2 上重新启动才能让 `zsh` 接管。`sudo reboot` 完成工作。 (4认同)
  • 如果无法正常工作,请退出并登录。 (3认同)

小智 60

我在超级用户论坛上找到了这个

打开/etc/passwd:

sudo vi /etc/passwd
Run Code Online (Sandbox Code Playgroud)

找到包含您的用户名的行:

username:x:1634231:100:Your Name:/home/username:/bin/bash
Run Code Online (Sandbox Code Playgroud)

并用 zsh 替换 bash:

username:x:1634231:100:Your Name:/home/username:/bin/zsh
Run Code Online (Sandbox Code Playgroud)

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

  • 你应该对这种方法非常小心 - 使用 `/etc/passwd` 通常不是最好的主意 (23认同)
  • 虽然我没有使用这个方法,但是它帮我验证了 `chsh -s \`which zsh\`` 的效果 (5认同)

小智 25

你也可以这样做:

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

sudo nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

然后在文件顶部下方添加一行

exec zsh
Run Code Online (Sandbox Code Playgroud)

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

  • 它还会破坏您所有的非交互式作业(例如`scp`)。 (20认同)
  • 很抱歉投票失败,但更改 `/etc/passwd` 或 `chsh` 是更好的解决方案,更可靠。 (3认同)

Rib*_*b47 10

我在当前用户下更改 shell 的权限有问题,但接下来对我有帮助(您应该为您的计算机设置正确的“zsh”文件夹):

sudo chsh -s /bin/zsh <myUserName>
Run Code Online (Sandbox Code Playgroud)