Ich möchte prüfen, ob ein bestimmter Befehl vorhanden ist, bash
und mich interessieren nur die nativen Befehle der Bash und nicht die vom Benutzer geschriebenen Skripte. Wenn ich mich auf beziehe, native commands
meine ich alle Befehle, die einem Benutzer allgemein zur Verfügung stehen.
Es gibt zwei Befehle
command -v
type
Damit kann geprüft werden, ob der Befehl vorhanden ist. Es gibt aber auch für benutzerdefinierte Skripte ein „true“ zurück, während ich mich auf die integrierten Befehle beschränken möchte.
Notiz:Ich versuche nicht nur zwischen einem bash builtin
und anderen Befehlen zu unterscheiden, weil
Typ -t touch
gibt file
als Typ an, aber dies ist ein Befehl, der dem Benutzer standardmäßig zur Verfügung steht. Aber wenn der Benutzer ein Skript schreibt und dann versucht, es auszuführen, möchte ich das filtern.
Jede Hilfe wird geschätzt.
Antwort1
Ich bin nicht sicher, ob „true“ nur für ein Shell-Builtin zurückgegeben wird, aber es type -t
wird der Typ des „Befehls“ zurückgegeben, einschließlich „Builtin“:
if [ "$(type -t help)" = "builtin" ]; then
echo "Help is a builtin command."
fi
help type
Für weitere Informationen führen Sie es aus .