通常,当我错误输入诸如 ls 之类的命令时(例如,在输入“s”之前按 ENTER 键),终端显示后会出现很长(约 2 秒)的延迟:
bash: l: command not found...
我可以理解输入错误密码后出现类似延迟的原因,根据为什么输入错误的密码后会有很大的延迟?。但为什么要在无法识别的命令之后延迟呢?这也有影响FAIL_DELAY
吗?/etc/login.defs
答案1
经过一些研究我发现这:
- 尝试卸载命令未找到的软件包,
$>yum remove command-not-found
然后再次安装它>$yum install command-not-found
(以防万一您的系统上安装了该软件包)。
如果这没有帮助尝试:
将其添加到您的
~/.bashrc
文件中:unset command_not_found_handle
答案2
我发现最好的解决方案,至少在Fedora上,是修改配置文件
/etc/PackageKit/CommandNotFound.conf
因为最大的延迟来自于搜索要安装的软件包,如果您
SoftwareSourceSearch=true
修改 SoftwareSourceSearch=false
延迟几乎为 0,并且您仍然会收到有关拼写错误的警告,这可能很有用。
答案3
Fedora 使用类似的东西。
如果您只想删除此功能,请使用:
yum remove PackageKit-command-not-found
答案4
就我而言,这是因为 /usr/libexec/pk-command-not-found 中存在一些已知的代理错误
Failed to search for file: cannot update repo 'updates':
Cannot prepare internal mirrorlist:
Curl error (28): Timeout was reached for https://mirrors.fedoraproject.org/metalink?repo=updates-released-f28&arch=x86_64
[Connection timed out after 30002 milliseconds]
我的代理配置是正确的,因为使用裸curl 命令下载完全相同的URL 会立即成功。
我检查了 pk-command-not-found 进程是否有代理配置:
tr '\0' '\n' < /proc/$(pgrep -f pk-command-not-found)/environ | grep -i proxy
然而,由于某种未知的原因,它并没有使用它。