新用户的标签自动完成


11

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

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

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

ssh newuser@mywebsite.com

登录后,shell不允许我执行制表符自动完成功能。例如,我将键入/ var / www / myweb {tab},但是tab按钮仅在外壳程序中输入一个空格。同样,按向上和向下箭头键不会显示我输入的最新Shell命令。

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

我错过了什么?

谢谢

Answers:


33

检查正在使用的外壳程序“ newuser”。确保它是真正支持制表符补全的文件(例如bash或zsh)。

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

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

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

# chsh -s /bin/bash rodjek

太好了!
约翰

2

在我的系统标签上,自动补全是通过以下方式添加的:

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

在.bashrc中。由于Bashrc在/ etc / skel中不存在,因此不会为新用户创建Bashrc。使用上面的代码在/ etc / skel中创建.bashrc,它将对新用户有效。然后将文件复制到刚创建的新用户,这样它也适用于他们。


1

您是否检查过您的新用户与root用户具有相同的shell?看来您的root用户已对您的东西进行了bash操作,而您的新用户具有ksh或类似的东西。看一下/ etc / passwd文件或SHELL环境变量。


1

添加用户时useradd,没有添加特殊的外壳。
您可以使用以下命令查看此内容:cat /etc/passwd

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

您可以看到用户test1的外壳程序为,/bin/bash但用户test3未添加外壳程序。

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

chsh -s /bin/bash test3

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

useradd -s /bin/bash test4

0

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

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

新帐户是否获得了不支持自动完成功能的其他外壳?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.