bash 中的任意字符串抛出 python 错误?

Arbitrary strings in bash throw python errors?

我的 shell 设置中的某些内容导致 "krmpfl" 或 "u45g5svtJ7" 等任意字符串创建 Python 错误:

$> krmpfl

Traceback (most recent call last):
  File "/usr/lib/command-not-found", line 28, in <module>
    from CommandNotFound import CommandNotFound
  File "/usr/lib/python3/dist-packages/CommandNotFound/CommandNotFound.py", line 19, in <module>
    from CommandNotFound.db.db import SqliteDatabase
  File "/usr/lib/python3/dist-packages/CommandNotFound/db/db.py", line 5, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

我希望 bash(而不是 python!)会抛出 "Unknown command krmpfl. Did you mean..." 类型的错误,但任何非已识别的命令出于某种原因传递给 python。我很困惑。

有没有人对如何调试这个或如何继续前进有想法?我试过 type krmpfl 但这(正确地)回应了 bash: type: krmpfl: not found

我的设置:

如果您当前的 shell 函数定义了一个名为 command_not_found_handle 的函数,bash 会针对不存在的命令运行该函数,而不是立即因 "command not found" 错误而失败。在你的情况下,该函数存在并调用 /usr/lib/command-not-found,它似乎是一个 Python 脚本,它试图下载(或至少建议你下载)带有 apt_pkg 的包,但你没有' 安装了 Python 模块,这会导致 Python 异常。