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

sha*_*ant 16 command-line shell ubuntu

我学到了一个新命令,至少我是这么想的,因为这个命令 : 的chsh行为不像描述的那样。

它被描述为这样工作:

  1. cat /etc/shells 要知道,安装了哪些外壳,因此您可以在其中进行选择。
  2. 这样做echo $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
Run Code Online (Sandbox Code Playgroud)

Kus*_*nda 21

注销并重新登录。

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


小智 6

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

  1. 首先,检查当前值

grep nameofuser /etc/passwd

  1. 更改

sudo usermod --shell /bin/bash nameofuser

  1. 验证一下

grep nameofuser /etc/passwd

  • 谢谢你 (2认同)