为什么我无法使用 chsh 命令更改 shell?

为什么我无法使用 chsh 命令更改 shell?

我学到了一个新命令,至少我认为是这样,因为这个命令 :chsh的行为与描述的不同。

它被描述为这样工作的:

  1. cat /etc/shells了解安装了哪些 shell,以便您可以在其中进行选择。
  2. 一定echo $SHELL要知道您正在使用哪个 shell。
  3. 选择一种外壳并类型chsh -s /path/to/shell
  4. 输入密码并使用 验证echo $SHELL您是否处于新 shell 中。

我已经这样做了,输入密码时没有收到错误消息,但我仍然在同一个 shell 中。

% echo $SHELL
/bin/bash
% cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
% chsh -s /bin/sh
Password: 
% echo $SHELL
/bin/bash

答案1

注销并重新登录。

chsh命令将更新/etc/passwd文件,但不会更改当前的shell 也不是当前 shell 中变量的值$SHELL(它无法做到这一点)。这就是您需要重新登录的原因;您必须启动新的登录会话才能使更改生效。

答案2

使用用户模式实用程序命令在我的情况下有效。运行在ubuntu 18.04上。

  1. 首先,检查当前值

grep nameofuser /etc/passwd

  1. 更改

sudo usermod --shell /bin/bash nameofuser

  1. 验证一下

grep nameofuser /etc/passwd

相关内容