Я хочу проверить, существует ли заданная команда в 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
.