检查命令是否存在于 bash 中

Sac*_*hin 0 command-line bash command

我想检查给定的命令是否存在bash,我只关心 bash 的本机命令而不是用户编写的脚本。当我提到native commands我的意思是所有那些通常对用户可用的命令。

有两个命令

command -v
type
Run Code Online (Sandbox Code Playgroud)

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

注意:我不只是试图区分 abash builtin和其他命令,因为

输入 -t 触摸

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

任何帮助表示赞赏。

Arc*_*ege 10

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

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

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