bash 完成对一位用户不起作用

Mar*_*ter 8 bash debian

在我的 Debian Wheezy 系统上,我有几个用户。对于一位用户,我们称他为 martin (UID 1000) bash 补全不起作用。它适用于所有其他用户,即使他们都使用相同的$HOME/.bashrc$HOME/.profile.

这是一个非常奇怪的问题,因为当我将 martin 的整个主目录复制到 testuser 时,bash 完成对 testuser 工作正常:

rm -rf /home/testuser
cp -a /home/martin /home/testuser
chown -R testuser:testuser /home/testuser
Run Code Online (Sandbox Code Playgroud)

这让我相信,无论导致此问题的原因是什么,都不是用户主页中的任何设置。

有人知道是什么导致了这个奇怪的问题吗?

更新: 当我登录虚拟终端(Gnome 终端)时,会遇到上述问题。但我刚刚发现,当从控制台 (ALT+F1) 登录时,bash 完成工作。此外,当在虚拟控制台中作为马丁(并且 bash 完成不起作用)时,当我这样做su - martin并登录时,突然 bash 完成工作。看起来从虚拟控制台和普通控制台(或su - martin)登录之间存在差异

slm*_*slm 1

您所描述的差异告诉我 Martin/home/martin/.bashrc或中存在一些不一致之处/home/martin/.bash_profile

这个结论的基本原理是由于 Bash 获取安装文件的方式。当一个人打开另一个选项卡时,比如说gnome-terminal,用户的选项卡$HOME/.bashrc将被获取,但他们的$HOME/.bash_profile. 但是,如果您是第一次登录,或者通过 ssh 进入系统,您的初始 Bash shell 将被调用,以便它获取$HOME/.bash_profile.

Bash 手册页中讨论了这些东西如何获取以及何时获取的顺序,请查看INVOCATION部分。

参考