背景
这次在wsl中按照idea时,使用了debian来做,准备新增一个用户而出现的问题以及解决。
问题
像往常一样,在debian(debian系)中准备跟almalinux(redhat系)一样使用useradd新增用户时,出现了不一样的情况。
- 默认并不会创建用户目录
# 创建用户
useradd user
像这样在almalinux中是能生成用户目录的,但在debian中是不会生成的

解决:
# 自己指定目录,并创建
useradd -md /home/user user
- 创建的用户切换后,很多指令用不了
# 切换用户
su - user
用户切换后就发现了不一样。
在almalinux上:
在debian上:
并且在debian无法使用history指令。
造成这个的原因是:history是bash内建的指令,其他shell不一定有。
解决:
# 创建指定shell的用户
useradd -md /home/user -s /bin/bash user
# 如果是已创建的用户
# 其一是
su - user
bash
# 其二是
usermod -s /bin/bash user
# 其三是
# 换掉debian的默认shell
dpkg-reconfigure dash
# 在弹出的界面中选择no
推荐2或3,1比较麻烦。
分析
其实通过上面的方法就已经解决了。但还是深入了解一下。
-
一般在脚本中要么使用bash,要么使用sh,而sh其实是一个软连接,作为一个全局使用的shell调用,可以是zsh等。
almalinux:
debian:
通过上面就知道了almalinux的sh指向bash,debian的sh指向dash。 -
了解了sh指向后,再去看useradd,看下默认值,查询为何会有不同结果。
almalinux:
debian:
发现almalinux默认shell直接指向bash,而debian的默认shell指向了sh,而sh是指向dash的。