Вбудовані команди завжди віддають перевагу зовнішнім командам. Обґрунтування полягає в тому, що вбудована команда швидша (і в кількох випадках, таких як cd
або , лише вбудована команда може мати бажаний ефект).test -o BASH_OPTION
Іноді зовнішня команда може мати можливості, яких вбудована оболонка не має. У такому випадку ви можете викликати зовнішню команду, вказавши явний шлях (тобто містить косу рису) (це обходить будь-яке занепокоєння щодо порядку введення $PATH
). Якщо ви не хочете жорстко кодувати зовнішній шлях, але ви хочете запобігти використанню вбудованого, ви можете використовувати "$(type -P test)"
(примітку капіталу P
) в bash, "$(whence -p test)"
ksh та =test
zsh. Ще один спосіб змусити використовувати зовнішню команду - використовувати command
вбудований ( command -p test …
) або пройти через env
утиліту ( env test …
).
У zsh ви можете відключити вбудовану програму за допомогою disable test
. Це постійне значення (для поточної оболонки або допоміжної оболонки), поки вбудований модуль не буде відновлено enable test
. У bash ви можете зробити те ж саме, enable -n test
щоб відключити та enable test
повторно ввімкнути.
Ви можете використовувати псевдонім або функцію для примушування до виконання іншої команди, наприклад alias test=/usr/bin/test
або test () { /usr/bin/test "$@"; }
. Якщо у вас є такий псевдонім, ви можете запобігти його використанню, цитуючи будь-яку його частину, наприклад \test
, виконувати звичайну функцію / вбудований / зовнішній пошук. Зауважте, що залежно від оболонки та її параметрів, визначення псевдоніму функції може бути розширено при зчитуванні функції або при її виконанні. Якщо ви визначили функцію, ви можете використовувати command test
для запобігання пошуку функцій, а також пошуку псевдоніму (тому тут test
вбудований файл буде викликатись, якщо не вимкнено).
/usr/bin/test -f "$file"
...