Нет, Debian и Ubuntu не двоичные совместимый. Debian и Ubuntu могут использовать различные компиляторы с другим ABI, различными версиями ядра, различными библиотеками, различные пакеты/версия и т.д. Как не все пакеты Ubuntu находятся в Debian (и наоборот) deb пакеты может также зависеть от неустанавливаемых версий.
Redhat и CentOS совпадают с CentOS, в основном получает все исходные пакеты от Redhat и компилирует их. Но Ubuntu действительно намного больше нравится обеспечивать собственные пакеты, пакет собственное программное обеспечение, используйте более старые или более новые версии восходящего программного обеспечения, исправьте ошибки и т.д.
Таким образом, не технически они не двоичные совместимый.
Я могу, заставил его звучать хуже, чем это в действительности. НО важно понять, что отношения между Ubuntu и Debian - Ничто как между rhel и CentOS
Для Вашего конкретного примера существует функция cd_builtin
, который определяется в builtins/cd.def (в исходном коде удара). Это обычно делает a cd
путем вызывания той функции. Но это может разветвиться сначала при использовании его в конвейере — например, cd / | echo
ветвления и вызовы cd_builtin
в ребенке. Можно также заметить это тем, как каталог на самом деле не изменяется:
anthony@Zia:~$ cd /tmp/
anthony@Zia:/tmp$ cd / | echo -n
anthony@Zia:/tmp$ cd /
anthony@Zia:/$
Заметьте, как каталог только изменяется, когда я не передаю по каналу от cd
.
Встроенные команды, по определению, выполняются в основном исполняемом файле, в противоположность в другой программе.
Все команды оболочки синхронны: оболочка ожидает команды для завершения, прежде чем она выполнит следующий. При выполнении внешней команды оболочка должна создать отдельный процесс, чтобы выполнить ту команду и ожидать его для выхода. При выполнении встроенной команды нет никакой потребности создать новый поток выполнения: команда выполняется в основном потоке.
Я не думаю ни один из общих потоков использования оболочек в их внутреннем дизайне. Возможности Shell довольно связываются традиционной single-thread-per-process моделью Unix, нет никакой проблемы в дизайне оболочки, который решили бы потоки.
Очень вероятно, что каждое встроенное реализовано функцией на некотором уровне в исходном коде оболочки.
Я думал бы, что они работают как функция в течение bash
исполняемый файл. Существует комментарий в Усовершенствованном Руководстве по созданию сценариев Bash, которое указывает это следующим образом:
выборка
Встроенной является команда, содержавшая в комплекте инструментальных средств Bash, буквально встроенном. Это или по причинам производительности - builtins, выполняются быстрее, чем внешние команды, которые обычно требуют разветвления прочь 1 отдельный процесс - или потому что конкретный встроенный прямой доступ потребностей к внутренностям оболочки.