Debian:删除软件包后 "command -v <command>" 仍然是 returns 路径?

Debian: "command -v <command>" still returns path after removing the package?

我已经 sudo apt-get remove --purge node-stylus 在我的 Debian 上卸载了 stylus 软件包。

现在当我尝试 运行 stylus 命令时它说:stylus: command not found。所以它按预期工作。

但在我的脚本中,我通过以下方式检查是否安装了 Stylus:

if ! command -v sudo stylus &> /dev/null; then
    echo "ERROR: Stylus is not installed!"
    exit 1
fi

并且出于某种原因 command -v stylus 仍然 returns /usr/bin/stylus 因此脚本不会失败。

我检查了 /usr/bin/ 那里没有手写笔。

有人可以向我解释一下为什么会这样吗?

Bash 维护一个用于查找的缓存;你想做

hash -r stylus

强制它忘记旧值。

另外,当然,当你真正想要command -v stylus时,不要使用command -v sudo,正如评论中已经指出的那样。