检查bash中是否存在该命令

检查bash中是否存在该命令

我想检查给定的命令是否存在,bash并且我只关心 bash 的本机命令,而不关心用户编写的脚本。当我提到时,native commands我指的是用户通常可以使用的所有命令。

有两个命令

command -v
type

可用于检查命令是否存在。但它也为用户编写的脚本返回 true,而我想将自己限制为内置命令。

笔记:我不仅仅是想区分 abash builtin和其他命令,因为

T 型触摸

给出file作为类型,但这是默认情况下用户可用的命令。但是,如果用户编写脚本然后尝试运行它,那么我想对其进行过滤。

任何帮助表示赞赏。

答案1

不确定是否仅针对 shell 内置命令返回 true,但type -t会返回“命令”的类型,包括“内置”:

if [ "$(type -t help)" = "builtin" ]; then
    echo "Help is a builtin command."
fi

运行help type以获取更多信息。

相关内容