bash にコマンドが存在するかどうかを確認する

bash にコマンドが存在するかどうかを確認する

特定のコマンドが存在するかどうかを確認したいのですbashが、bash のネイティブ コマンドのみを対象としており、ユーザーが作成したスクリプトは対象としていません。ここで言及するのは、native commandsユーザーが一般的に使用できるすべてのコマンドを指します。

2つのコマンドがあります

command -v
type

コマンドが存在するかどうかを確認するために使用できます。ただし、組み込みコマンドのみに制限したいのに、ユーザーが作成したスクリプトに対しても true を返します。

注記:bash builtin私は単にaコマンドと他のコマンドを区別しようとしているのではない。

タイプ -t タッチ

タイプとして与えられますfileが、これはデフォルトでユーザーが使用できるコマンドです。ただし、ユーザーがスクリプトを書いてそれを実行しようとする場合は、それをフィルタリングしたいと思います。

どのような助けでも大歓迎です。

答え1

シェルの組み込みコマンドに対してのみ true を返すかどうかはわかりませんが、type -t「組み込みコマンド」を含む「コマンド」のタイプを返します。

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

help type詳細については実行してください。

関連情報