当我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'
但是我认为显示所有系统调用的那个是最好的开始。