Гид по технологиям

Что такое shell builtins и как проверить, является ли команда встроенной

4 min read Linux Обновлено 06 Dec 2025
Shell builtins: как проверить команду в Linux
Shell builtins: как проверить команду в Linux

Плотник использует рубанок

Shell builtins — это команды, которые реализованы прямо внутри интерпретатора командной строки (shell). Они запускаются быстрее, потому что выполняются из оперативной памяти, а не читаются с диска как внешние бинарные файлы. Простая команда cd, меняющая текущую директорию, — классический пример: её состояние влияет на сам процесс оболочки, поэтому она обычно реализована как builtin.

Почему используются встроенные команды

  • Быстрее запуск: доступ к памяти быстрее, чем к диску.
  • Доступ к состоянию процесса shell: некоторые команды изменяют окружение shell (например, cd, export), поэтому они должны быть встроены.
  • Упрощённая интеграция с функциями оболочки: парсинг, подстановка и контроль потоков легче реализовать как часть интерпретатора.

Важно: наличие builtin-команды не мешает существованию внешней утилиты с тем же именем. Если нужно явно запустить внешнюю версию — укажите абсолютный путь.

Как точно определить, является ли команда shell builtin

Используйте несколько надёжных инструментов. Ниже — приоритетный список команд и примеры.

1) type -t

Команда type -t возвращает тип команды в однословном формате.

type -t cd

Ожидаемый вывод:

builtin

Если вывод — builtin, значит команда встроенная. Если возвращается file, alias или function — это не встроенная системная утилита.

2) command -v

В bash и некоторых других shell можно выполнить:

command -v cd

Если команда — builtin, вывод обычно показывает её имя или пометку. Это удобно для быстрого скриптового теста.

3) which и which -a

Команда which покажет путь к внешней программе или пометит, что команда является alias/встроенной в зависимости от реализации which. Замечание: which сама может быть внешней утилитой или алиасом/встроенной — её результаты менее универсальны, чем у type.

which cd
which -a cd

4) Справка shell и списки встроенных команд

  • В Bash: help и compgen -b помогут получить список встроенных команд.
  • В других оболочках посмотрите соответствующую страницу справки или man-подраздел для builtins.

Пример для bash:

help cd
compgen -b | sort

Разные оболочки имеют разные встроенные команды. Zsh, например, содержит много встроенных возможностей, и её документация обычно содержит отдельный раздел, посвящённый builtins.

Примеры и сценарии использования

  • cd — почти всегда builtin, иначе бы смена директории выполнялась в дочернем процессе и не повлияла бы на текущую оболочку.
  • echo — часто builtin, но также существует внешняя /bin/echo с отличающимся поведением.
  • test/[, export, readonly, alias — обычно реализованы как встроенные.

Когда использовать внешнюю версию:

  • Нужна специфическая для утилиты реализация или флаг, отсутствующий в builtin.
  • Требуется детерминированность перекрытия: указав абсолютный путь (/usr/bin/echo), вы уверены, какую программу запускаете.

Когда builtin может подводить (когда не подходит)

  • Совместимость: поведение builtin может отличаться между shell (bash vs zsh).
  • Функциональность: внешняя утилита может поддерживать дополнительные опции.
  • Отладка: внешняя программа легче заменить/просмотреть (strace, ldd и т.д.).

Чек-лист для администратора или скрипт-автора

  • Проверить тип команды: type -t <команда>.
  • Убедиться, что поведение builtin совпадает с требованиями (проверка опций).
  • При необходимости явно указать путь к внешней утилите (/usr/bin/…).
  • Учесть переносимость между shell (bash, dash, zsh, ksh).

Мини-методология: как безопасно заменить поведение в скрипте

  1. Определите, нужна ли вам именно функциональность shell (например, изменение окружения).
  2. Проверьте тип: type -t команда.
  3. Если требуется внешний вариант — используйте абсолютный путь.
  4. Добавьте проверки в скрипт для разных shell (fallback/feature detection).

Критерии приёмки

  • Скрипт корректно определяет тип команды через type -t.
  • Поведение не зависит от локального alias (учёт command -v).
  • Если требуется внешняя утилита — скрипт использует абсолютный путь или явную проверку наличия опции.

Фактбокс — что важно запомнить

  • Builtin = команда, реализованная в самом shell.
  • type -t — самый надёжный быстрый тест.
  • command -v и compgen полезны для скриптов и списков.
  • which может вводить в заблуждение из-за вариаций реализации.

Простая блок-схема принятия решения

flowchart TD
  A[Есть команда] --> B{Нужно ли изменять состояние shell?}
  B -- Да --> C[Должна быть builtin]
  B -- Нет --> D{Требуется особое поведение/опции?}
  D -- Да --> E[Использовать внешнюю утилиту 'указать путь']
  D -- Нет --> F[Можно использовать builtin или внешний вариант]

Краткий глоссарий (1 строка)

  • builtin — команда, встроенная в интерпретатор командной строки; выполняется без запуска отдельного процесса.

Короткая памятка по совместимости

  • При переносе скриптов между системами проверьте набор builtins в целевом shell.
  • Если нужен строгий, предсказуемый набор опций — фиксируйте вызов через абсолютный путь к утилите.

Вывод команды which в zsh

Здесь показан пример, где which сообщает о местоположении или помечает builtin/alias в зависимости от конфигурации. Всегда сверяйтесь с type для точности.

Итог

Shell builtins ускоряют выполнение часто используемых команд и дают доступ к состоянию самой оболочки. Используйте type -t как первичный инструмент для проверки, дополняя его command -v и списками встроенных команд через справку shell. При необходимости точной совместимости или расширенного поведения — вызывайте внешнюю утилиту по абсолютному пути.

Важно: при написании переносимых скриптов учитывайте различия между shell и явно проверяйте необходимую функциональность.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Настройка роутера для игр: оптимизация и советы
Сеть

Настройка роутера для игр: оптимизация и советы

Отключить установку вне Microsoft Store в Windows 11
Windows

Отключить установку вне Microsoft Store в Windows 11

App Privacy Report на iPhone — просмотреть и отключить
Приватность

App Privacy Report на iPhone — просмотреть и отключить

Общие библиотеки Google Фото — настройка и использование
Инструкции

Общие библиотеки Google Фото — настройка и использование

Восстановление пароля OneNote — лучшие инструменты
Безопасность

Восстановление пароля OneNote — лучшие инструменты

Как отключить сбор данных Cortana в Windows 10
Конфиденциальность

Как отключить сбор данных Cortana в Windows 10