新用户的标签自动完成功能

新用户的标签自动完成功能

我通过执行以下操作添加了一个新的 Linux 用户

useradd -d /var/www/mywebsite.com -m newuser
passwd newuser

我使用以下命令登录服务器来测试该账户

ssh [email protected]

登录后,shell 不允许我使用 tab 自动完成功能。例如,我会输入 /var/www/myweb{tab},但 tab 按钮只会在 shell 中输入一个空格。此外,按向上和向下箭头键不会显示最近输入的 shell 命令。

当我以 root 身份 ssh 登录时,一切都运行正常。但是当我以新用户身份 ssh 登录时,一切都不正常。

我错过了什么?

谢谢

答案1

检查“newuser”使用的 shell。确保它确实支持制表符补全(如 bash 或 zsh)。

你可以使用以下命令确定用户正在使用的 shell

# getent passwd rodjek
rodjek:x:1001:1001:x:/home/rodjek:/bin/zsh

您可以使用 chsh 命令更改用户 shell

# chsh -s /bin/bash rodjek

答案2

当您添加用户时,useradd没有添加任何特殊 shell。
您可以使用以下命令查看:cat /etc/passwd

test1:x:1004:1005:,,,:/home/test1:/bin/bash
test3:x:1007:1008::/home/test3:

可以看到用户test1拥有的shell/bin/bash但是用户test3没有添加shell。

test3要修复此问题,你可以用以下命令更改用户的 shell :

chsh -s /bin/bash test3

或者当您创建新用户时,您可以使用 s 选项:

useradd -s /bin/bash test4

答案3

在我的系统选项卡上,自动完成功能通过以下方式添加:

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

在 .bashrc 中。由于 /etc/skel 中不存在 Bashrc,因此不会为新用户创建它。在 /etc/skel 中使用上述代码创建 .bashrc,新用户即可使用。然后将该文件复制到您刚刚创建的新用户,这样他们也可以使用该文件。

答案4

在您创建帐户之前,文件夹 /var/www/mywebsite.com 是否存在?

您能否检查 /etc/skel 的内容是否已复制到主目录 /var/www/mywebsite.com?

新帐户是否获得了不同的 shell,并且不支持自动完成?

相关内容