The invoked shell is chosen from (highest priority first):
The shell specified with --shell.
If --preserve-environment is used, the shell specified by the
$SHELL environment variable.
The shell indicated in the /etc/passwd entry for the target
user.
/bin/sh if a shell could not be found by any above method.
很可能您在创建用户时没有为用户设置登录 shell,导致
su
默认为/bin/sh
. 如中所述man su
:使用 adduser 而不是 useradd 使这个过程更容易。
如果 /etc/passwd 中的用户旁边没有列出登录 shell,则可以确认这是问题所在。
您可以通过运行来解决此问题
usermod -s /bin/bash <username>