在学习ubuntu系统的过程中,新建了一些测试用户,配置了ssh登录。但在使用xshell登录后,输错命令时,使用退格、delete删除时出现乱码,shell中提示符也很简单,只有一个$,检查了xshell相关配置,默认设置都是正常。
在使用中,发现root用户ssh登录正常,shell中提示符为:root@ubuntu:~#
在系统中通过Ctrl+Alt+F2切换到tty2,使用普通权限用户登录又是正常的,退格键正常使用,shell提示符形如:zhangs@ubuntu:~$ 。
感觉问题还是出在了xshell的配置中。
后来用root查看了/etc/passwd,发现
root@ubuntu:~# more /etc/passwd|grep zhangs
zhangs:x:1002:1002::/home/zhangs:
root@ubuntu:~# more /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
原来是使用useradd -m zhangs创建用户的时候,默认是没有shell的。
通过usermod -s /bin/bash zhangs命令,给用户zhangs提定了shell就好了。
usermod的manpage中,关于参数-s的说明中提到,passwd文档的shell字段为空的情况下,会让系统选择默认的登录shell,但是有一点想不通的是,为什么在tty2上为什么普通用户在没有指定shell的情况下会默认调用bash?
-s, --shell SHELL
用户的新登录 shell 的名称。将此字段设置为空会让系统选择默认的登录 shell。