为什么找不到命令后很长的延迟?


18

通常,当我输错ls之类的命令时(例如,我在键入's'之前按了ENTER),在终端显示后会有很长的(〜2s)延迟:

bash: l: command not found...

我可以理解输入错误密码后出现类似延迟的原因,请问为什么输入错误密码后会有较大延迟?。但是,为什么在无法识别的命令后延迟呢?是否FAIL_DELAY/etc/login.defs也影响呢?


8
也许Fedora现在还使用了可怕的Ubuntu错误功能,提示您“此程序未安装,要安装,请输入...”?然后,延迟是由搜索所有可安装软件包的数据库引起的。尝试调用psql(PostgreSQL的一部分),默认情况下可能未安装psql,但希望将其存储在存储库中。
Ulrich Schwarz,

什么echo "$PROMPT_COMMAND"输出?
rozcietrzewiacz

echo“ $ PROMPT_COMMAND”:printf“ \ 033] 0;%s @%s:%s \ 007”“ $ {USER}”“ $ {HOSTNAME %%。*}”“” $ {PWD /#$ HOME /〜 }“
paislee,2011年

回声$ PATH打印什么?每次您按回车键时,系统都会在此处进行检查。
Hanan N.

Answers:


19

经过一些研究,我发现了这一点

  • 尝试使用卸载未找到的命令的软件包,$>yum remove command-not-found然后使用再次安装>$yum install command-not-found(以防万一,您已经在系统上安装了该软件包)。

如果那无济于事,请尝试:

  • 将此添加到您的~/.bashrc文件:

    unset command_not_found_handle


2
第二个建议消除了延迟。我没有安装命令找不到包。谢谢!
paislee,2011年

我怀疑对谁认为默认启用此功能是个好主意的判断
fostandy

16

我发现,至少在Fedora上,最好的解决方案是修改配置文件
/etc/PackageKit/CommandNotFound.conf

因为最大的延迟来自搜索要安装的软件包(如果您 SoftwareSourceSearch=trueSoftwareSourceSearch=false

延迟几乎为0,您仍然会收到有关拼写错误的警告,这可能很有用。


3

Fedora使用类似的东西。

如果您只想删除此功能,请使用:

yum remove PackageKit-command-not-found

后续操作:如果您删除此软件包,我忘记提了,您会收到一条错误消息:bash: /usr/libexec/pk-command-not-found: No such file or directory 要解决此问题,请在删除软件包 后创建/ usr / libexec / pk-command-not-found并带有以下内容: #!/bin/sh echo "Command not found: $1" 这将打印:找不到命令:fail-command

0

就我而言,这是因为/ 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

但是,出于某些未知原因,它不使用它。

https://bugzilla.redhat.com/show_bug.cgi?id=1553368

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.