当我input一个不存在的命令时,我的机器停止了大约5秒钟,然后返回到shell提示符

当我input一个不存在的命令时,它会显示“找不到命令”。 然后等待大约5秒,然后再次显示提示。

我如何解决这个问题?

我正在使用Fedora。

检查您的path是否包含“按需安装”networking共享。 另外,我的Ubuntu安装了一些东西,如果你input了一个已经存在的命令的名字,但是你还没有安装它,那么就会说'你需要安装package foo'。 我不记得那是怎么回事,但显然必须通过整个包数据库进行某种search,这可能会花费很多时间。

如果你使用的是bash,input'set'并寻找一个叫做'command_not_found_handle()'的函数。 这是bash在没有find命令时运行的东西。

这听起来像是你已经安装了PackageKit-command-not-found软件包。 安装完成后,如果input不存在的命令,则会显示“未find命令”,然后search包存储库,以确定是否存在包含您input的命令的包。 如果发现一个包,它会提示你下载它,否则它会返回到命令提示符。

如果你不想要这个function,你可以通过运行“sudo yum remove PackageKit-command-not-found”来删除PackageKit-command-not-found包

我认为保罗关于自动安装networking共享的想法很可能是挂起的。 查看挂起位置的最简单方法是查看进程挂起的系统调用。 strace是跟踪系统调用的工具,例如:

 `strace bash -c 'non_existent_command'` .... stat64("/mnt/remotebin", 0xbfad11e0) = -1 ENOENT (No such file or directory) #Hangs here Maybe? ... 

如果它挂在path中的某个自动挂载上,则可以使用以下过滤输出:

 strace -e trace=stat64 bash -c 'non_existent_command' 

但是我认为显示所有系统调用的那个是最好的开始。