我经常在 Bash 中使用制表符补全功能来补全目录,但我发现如果我不小心在目录中包含问号,它会挂起一段不可接受的时间。我想知道为什么以及如何尽可能防止这种情况发生。以下是场景:
我启动一个命令并使用~键来代表主页:
ls ~?Desktop/co
哎呀!我按住 的Shift时间太长了。我本来打算将?设置为/。但是(哦不!)肌肉记忆已经开始发挥作用。在Tab我注意到错误之前,我已经按下了 。现在我只能等待 shell 愤怒地对我发出哔哔声。通常要等一两分钟。
发生了什么?为什么问号会导致它挂起并最终发出哔哔声?有什么方法可以阻止它挂起?
答案1
Bash 可能会枚举所有符合该模式的用户 ID,?Desktop
以查看其主目录中是否存在名称以 开头的文件co
。如果您的用户的主目录位于文件服务器上,则意味着网络流量,如果 NFS 服务器(或 NIS)需要时间响应,则网络流量可能会很慢。