В OSX 10.8, если вы сравните двоичные файлы для bash, sh и ksh, несколько разных параметров оболочки, они имеют одинаковый размер. Если вы возьмете это дальше и cmp
двоичные файлы, то, похоже, будет разница только в один байт между двоичными файлами.
Кажется, это поверхностно указывает на то, что весь код для поддержки всех различных оболочек доступен в каждом двоичном файле, но то, к какому подмножеству у вас есть доступ, зависит от того, какую оболочку вы в итоге выполняете.
- Кто-нибудь может подтвердить, что двоичные файлы на самом деле скомпилированы таким образом?
- С точки зрения Apple, есть ли у них какое-либо преимущество в объединении всех оболочек таким образом?
ksh и bash совершенно разные, но двоичные файлы bash и sh в основном идентичны. OS X's sh - это версия bash, которая:
sh -l
не читает~/.bash_profile/
.echo
действуетecho -e
и не поддерживает никаких опций.FCEDIT по умолчанию - ed в sh, но EDITOR или ed в bash:
Источник можно скачать с http://opensource.apple.com/tarballs/ .
От человека Баш :
Это не подражает другим аспектам оригинальных раковин Борна все же.
Оригинальные оболочки Bourne больше не поддерживаются, и теперь / bin / sh - это другая оболочка, которая просто соответствует POSIX. OS X позволяет использовать bashism, которые не обязательно работают с / bin / sh на других платформах (например, dash в Ubuntu).
источник