我刚刚在 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
}