解决 Linux 新用户 shell 功能不全的问题

本文最后更新于:2022年10月28日 下午

在ubuntu服务器上,用useradd命令创建了一个普通用户后,shell 功能不全,使用不方便,本文记录解决方案。

问题复现

  • 新建用户后,登录终端发现 shell 只有一个 $ 符号
  • 无法使用 tab 补全,上下键索引命令等功能

问题原因

  • 通过查看 /etc/passwd 文件可以看到新用户 test 的shell 程序为 /bin/sh ,正常用户为 /bin/bash
1
2
3
4
5
6
7
8
9
ps:x:1000:1000:ps,,,:/home/ps:/bin/bash
sshd:x:122:65534::/run/sshd:/usr/sbin/nologin
zhai:x:1001:1001::/home/zhai:/bin/bash
vvd:x:1002:1002::/home/vvd:/bin/bash
statd:x:123:65534::/var/lib/nfs:/usr/sbin/nologin
junran:x:1003:1003::/home/junran:/bin/bash
nvidia-persistenced:x:124:128:NVIDIA Persistence Daemon,,,:/nonexistent:/usr/sbin/nologin
davfs2:x:125:130::/var/cache/davfs2:/usr/sbin/nologin
test:x:1004:1004::/home/xinchun:/bin/sh
  • 该用户自己查看环境变量
1
2
$ echo $SHELL
/bin/sh

​ 也能发现自己用的 shell 是 /bin/sh

  • 解决问题仅需将其改为 /bin/bash 即可

解决方案

  • 通过 usermod 命令修改用户 test 的 shell 程序:
1
sudo usermod -s /bin/bash lee
  • 重新登录即可解决问题

参考资料


解决 Linux 新用户 shell 功能不全的问题
https://www.zywvvd.com/notes/system/linux/user-bash/linux-new-user-bash/
作者
Yiwei Zhang
发布于
2022年10月26日
许可协议