我想检查给定的命令是否存在,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
以获取更多信息。