Как работает этот сценарий svn?

Почему обязательные утилиты POSIX не встроены в оболочку?

Поскольку для соответствия POSIX требуется система 1 для предоставления большинства утилит как отдельные команды.

Наличие их в оболочке означало бы, что они должны существовать в двух разных местах: внутри оболочки и вне ее. Конечно, можно было бы реализовать внешнюю версию, используя оболочку сценария оболочки для встроенной, но это поставило бы в невыгодное положение приложения, не являющиеся оболочкой, вызывающие утилиты.

Обратите внимание, что BusyBox пошел по предложенному вами пути, реализовав множество команд внутри и предоставив автономный вариант с использованием ссылок на самого себя. Одна проблема заключается в том, что хотя набор команд может быть довольно большим, реализации часто являются подмножеством стандарта, поэтому не соответствуют требованиям.

Также обратите внимание, что по крайней мере ksh93 , bash и zsh идут дальше, предоставляя настраиваемые методы для запущенной оболочки для динамической загрузки встроенных функций из разделяемых библиотек.Технически тогда ничто не мешает реализовать все утилиты POSIX и сделать их доступными как встроенные.

Наконец, создание новых процессов стало довольно быстрой операцией в современных операционных системах. Если вы действительно столкнулись с проблемой производительности, возможно, есть некоторые улучшения, чтобы ваши скрипты работали быстрее.

1 POSIX.1-2008

Однако все стандартные утилиты , включая обычные встроенные в таблицу, но не специальные встроенные ins, описанные в Специальные встроенные утилиты, , должны быть реализованы таким образом, чтобы к ним можно было получить доступ через семейство функций exec , как определено в {{1} } том Системные интерфейсы POSIX.1-2008, и может быть вызван непосредственно теми стандартными утилитами, которые в нем нуждаются (env, find, nice, nohup, time, xargs).

2
15.09.2015, 11:19
0 ответов

Теги

Похожие вопросы