新用户的标签自动完成

Joh*_*ohn 17 linux useradd

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

useradd -d /var/www/mywebsite.com -m newuser
passwd newuser
Run Code Online (Sandbox Code Playgroud)

我通过使用以下命令登录服务器来测试帐户

ssh newuser@mywebsite.com
Run Code Online (Sandbox Code Playgroud)

登录后,shell 不允许我执行选项卡自动完成。例如,我会输入 /var/www/myweb{tab},但选项卡按钮只会在 shell 中输入一个空格。此外,按向上和向下箭头键不会给我输入的最新 shell 命令。

当我以 root 身份 ssh 登录时,一切正常。但是当我以新用户身份 ssh 登录时它不起作用。

我错过了什么?

谢谢

rod*_*jek 41

检查正在使用的 shell 'newuser'。确保它是一个真正支持 tab 补全的工具(比如 bash 或 zsh)。

您可以使用以下命令确定用户使用的 shell

# getent passwd rodjek
rodjek:x:1001:1001:x:/home/rodjek:/bin/zsh
Run Code Online (Sandbox Code Playgroud)

您可以使用 chsh 命令更改用户外壳

# chsh -s /bin/bash rodjek
Run Code Online (Sandbox Code Playgroud)


小智 5

当您添加用户时,useradd没有添加特殊的 shell。
您可以使用以下命令看到这一点:cat /etc/passwd

test1:x:1004:1005:,,,:/home/test1:/bin/bash
test3:x:1007:1008::/home/test3:
Run Code Online (Sandbox Code Playgroud)

可以看到该用户test1有一个shell /bin/bash,但该用户test3没有添加shell。

要解决此问题,您可以使用以下命令更改用户的 shell test3

chsh -s /bin/bash test3
Run Code Online (Sandbox Code Playgroud)

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

useradd -s /bin/bash test4
Run Code Online (Sandbox Code Playgroud)