No OSX 10.8, se você comparar os binários para bash, sh e ksh, algumas opções diferentes de shell, elas terão o mesmo tamanho. Se você levar adiante e cmp
os binários, parece haver apenas uma diferença de um byte entre os binários.
Isso parece superficialmente indicar que todo o código para suportar todos os shells diferentes está disponível em cada binário, mas qual subconjunto você tem acesso depende de qual shell você acaba executando.
- Alguém pode confirmar que os binários são de fato compilados dessa maneira?
- Do ponto de vista da Apple, há algum benefício em combinar todas as conchas dessa maneira?
O ksh e o bash são completamente diferentes, mas os binários bash e sh são praticamente idênticos. O sh do OS X é uma versão do bash que:
sh -l
, não lê~/.bash_profile/
.echo
age comoecho -e
e não suporta nenhuma opção.O FCEDIT padrão é ed em sh, mas EDITOR ou ed em bash:
A fonte pode ser baixada em http://opensource.apple.com/tarballs/ .
De man bash :
Porém, ele não emula outros aspectos das conchas Bourne originais.
Os shells Bourne originais não são mais mantidos, e / bin / sh agora deve ser outro shell que apenas cumpre o POSIX. O sh do OS X permite o uso de basismos que não necessariamente funcionam com o / bin / sh em outras plataformas (como o traço no Ubuntu).
fonte