Integrierte Befehle werden immer externen Befehlen vorgezogen. Das Grundprinzip ist, dass der eingebaute Befehl schneller ist (und in einigen Fällen, wie z. B. cd
oder , nur der eingebaute Befehl den gewünschten Effekt haben kann).test -o BASH_OPTION
Manchmal verfügt der externe Befehl über Funktionen, die die integrierte Shell nicht bietet. In diesem Fall können Sie den externen Befehl aufrufen, indem Sie einen expliziten Pfad angeben (dh einen Schrägstrich enthalten) (dies umgeht alle Bedenken hinsichtlich der Reihenfolge in $PATH
). Wenn Sie den externen Pfad nicht fest codieren möchten, aber die Verwendung des integrierten Pfads verhindern möchten, können Sie "$(type -P test)"
( Notizkapital P
) in bash, "$(whence -p test)"
in ksh und =test
in zsh verwenden. Eine andere Möglichkeit, die Verwendung eines externen Befehls zu erzwingen, besteht darin, das command
eingebaute ( command -p test …
) zu verwenden oder das env
Dienstprogramm ( env test …
) zu durchlaufen .
In zsh können Sie ein eingebautes System mit deaktivieren disable test
. Dies ist permanent (für die aktuelle Shell oder Subshell), bis das eingebaute System wieder aktiviert wird enable test
. In bash können Sie dasselbe tun enable -n test
, um zu deaktivieren und wieder enable test
zu aktivieren.
Sie können einen Alias oder eine Funktion verwenden, um die Ausführung eines anderen Befehls zu erzwingen, z. B. alias test=/usr/bin/test
oder test () { /usr/bin/test "$@"; }
. Wenn Sie über einen solchen Alias verfügen, können Sie dessen Verwendung verhindern, indem Sie einen Teil davon zitieren, z. B. \test
die normale Funktion / integrierte / externe Suche ausführen. Beachten Sie, dass Aliasdefinitionen in einer Funktion abhängig von der Shell und ihren Einstellungen erweitert werden können, wenn eine Funktion gelesen oder ausgeführt wird. Wenn Sie eine Funktion definiert haben, können Sie damit sowohl command test
die Funktionssuche als auch die test
Aliasuche verhindern (daher wird hier die integrierte Funktion aufgerufen, sofern sie nicht deaktiviert ist).
/usr/bin/test -f "$file"
...