Wbudowane polecenia są zawsze preferowane od poleceń zewnętrznych. Uzasadnieniem jest to, że wbudowane polecenie jest szybsze (aw kilku przypadkach, takich jak cdlub , tylko wbudowane polecenie może mieć pożądany efekt).test -o BASH_OPTION
Czasami zewnętrzne polecenie może mieć funkcje, których nie ma wbudowana powłoka. W takim przypadku możesz wywołać zewnętrzne polecenie, podając wyraźną ścieżkę (tj. Zawierającą ukośnik) (pomija to wszelkie obawy dotyczące kolejności w $PATH). Jeśli nie chcesz sztywno kodować ścieżki zewnętrznej, ale chcesz uniemożliwić korzystanie z wbudowanej funkcji, możesz użyć "$(type -P test)"(uwaga kapitału P) w bash, "$(whence -p test)"w ksh i =testw zsh. Innym sposobem wymuszenia użycia polecenia zewnętrznego jest użycie commandwbudowanego ( command -p test …) lub przejście przez envnarzędzie ( env test …).
W Zsh możesz wyłączyć wbudowane za pomocą disable test. Jest to stałe (dla bieżącej powłoki lub podpowłoki), dopóki wbudowane narzędzie nie zostanie ponownie włączone za pomocą enable test. W bash możesz zrobić to samo z, enable -n testaby wyłączyć i enable testwłączyć ponownie.
Możesz użyć aliasu lub funkcji, aby wymusić wykonanie innego polecenia, na przykład alias test=/usr/bin/testlub test () { /usr/bin/test "$@"; }. Jeśli masz taki alias, możesz uniemożliwić jego użycie, cytując dowolną jego część, np. \testWykona normalną funkcję / wbudowane / wyszukiwanie zewnętrzne. Zauważ, że w zależności od powłoki i jej ustawień, definicje aliasów w funkcji mogą być rozszerzane, gdy funkcja jest czytana lub kiedy jest wykonywana. Jeśli zdefiniowałeś funkcję, możesz jej użyć, command testaby zapobiec wyszukiwaniu funkcji oraz wyszukiwaniu aliasów (więc tutaj testwbudowane będą wywoływane, chyba że wyłączone).
/usr/bin/test -f "$file"...