特定のコマンドが存在するかどうかを確認したいのです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
詳細については実行してください。