在 bash 中输入无效命令时,如何修复“/usr/bin/python:没有此文件或目录”?

在 bash 中输入无效命令时,如何修复“/usr/bin/python:没有此文件或目录”?

我刚刚在 Windows 上的 Windows Subsystem For Linux (WSL) 下安装了 Ubuntu 18.04.4 LTS。当我运行 bash 终端中不存在的命令时(例如,如果我不小心在 中添加了一个多余的 s ls),我会收到此错误:

$ lss
-bash: /usr/bin/python: No such file or directory

错误是正确的,我只安装了python3:

$ ls /usr/bin/python*
/usr/bin/python3           /usr/bin/python3-jsonpatch    /usr/bin/python3-jsonschema  /usr/bin/python3.6m
/usr/bin/python3-jsondiff  /usr/bin/python3-jsonpointer  /usr/bin/python3.6           /usr/bin/python3m

从以前使用 Ubuntu 的过程中,我记得该消息应该是“可以在以下软件包中找到程序‘lss’:”我不再需要该消息,并且我不想只是为了让它工作而安装 python2(这个问题有通过安装 py2 解决问题的答案)。

是否有可能在不安装 python2、将 python 3 符号链接为 2 或变得完美并且不再出现拼写错误的情况下修复这个问题?

理想情况下,我可以将“命令不存在”脚本移植到 python3 或完全禁用它

答案1

Python3 不是 python2 的直接替代品。您需要 python3 版本lss

如果我是你,我会更新lss。这是一个独立的脚本,源代码可以在github.1很明显:

print 'Usage:', __file__, '/path/to/dir'

使用 python3 时,“print” 需要使用“(”和“)”。我会将脚本放在名为lss3或类似名称的文件中,并使用它python3 lss3来查找和修复错误。

答案2

事实证明我重写了该command_not_found_handle函数(bash 功能python)直接在我的bashrc中调用一些内容:

# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
    function command_not_found_handle {
        # check because c-n-f could've been removed in the meantime
        if [ -x /usr/lib/command-not-found ]; then
           /usr/bin/python /usr/lib/command-not-found -- $1
           return $?
        else
           return 127
        fi
    }
fi

该代码不再是必要的(曾经是吗?)并且删除它解决了我的问题 - 现在再次出现旧的“可以在以下包中找到”输出。

为了完整性:如果我想跳过 python 代码和命令不存在的简单输出,我可以将其放在我的 bashrc 中:

function command_not_found_handle {
    echo Command not found: $1
    return 127
}

相关内容