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
,正如评论中已经指出的那样。
我已经 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
,正如评论中已经指出的那样。