Проверьте, существует ли команда в bash

Проверьте, существует ли команда в bash

Я хочу проверить, существует ли заданная команда в bashи меня интересуют только собственные команды bash, а не скрипты, написанные пользователем. Когда я говорю о, native commandsя имею в виду все те команды, которые обычно доступны пользователю.

Есть две команды

command -v
type

который можно использовать для проверки существования команды. Но он также возвращает true для скриптов, написанных пользователем, тогда как я хочу ограничиться только встроенными командами.

Примечание:Я не просто пытаюсь отличить bash builtinкоманду a от других, потому что

тип -t touch

дает fileкак тип, но это команда, доступная пользователю по умолчанию. Но если пользователь пишет скрипт, а затем пытается его запустить, то я хотел бы отфильтровать это.

Любая помощь будет оценена по достоинству.

решение1

Не уверен, что возвращает true только для встроенной функции оболочки, но type -tвернет тип «команды», включая «встроенную»:

if [ "$(type -t help)" = "builtin" ]; then
    echo "Help is a builtin command."
fi

За более подробной информацией обращайтесь help type.

Связанный контент