我想檢查給定的命令是否存在,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
以獲取更多資訊。