檢查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以獲取更多資訊。

相關內容