A afirmação na sua pergunta está incorreta. O Solaris até a versão 10 está fornecendo o verdadeiro shell Bourne legado como /bin/sh
. Isso foi feito para não quebrar a compatibilidade com scripts antigos que podem falhar com um shell diferente. Porém, essa escolha foi muito frustrante.
A maioria, se não todas as versões restantes do Unix e do Unix, incluindo o Solaris 11, fornece um shell compatível com POSIX, /bin/sh
porque o POSIX exige o sh
comando para iniciar um shell POSIX, não o shell Bourne herdado que não é compatível. /bin/sh
é geralmente :
ksh88
ou ksh93
nas implementações comerciais do Unix
- um modificado
bash
em OS/X
(embora costumava ser zsh
)
- um
ash
ou pdksh
derivado em outroBSDs
bash
ou dash
em distribuições Gnu / Linux.
Não é necessariamente um link, mas pode ser um executável real em muitos sistemas, exceto no Gnu / Linux.
Curiosamente, apesar do que afirma a resposta mais votada para sua pergunta, não é a falta de recursos que leva os desenvolvedores de distribuição a instalar algo diferente do shell Bourne herdado, /bin/sh
mas o desejo de ser o mais compatível possível com POSIX, ou seja, se comportar como um Unix como OS. O fato de o shell POSIX ter mais recursos do que o shell Bourne herdado é apenas um efeito colateral desse objetivo de conformidade padrão.
Também é um fato que algumas conchas bash
se comportam de maneira diferente quando chamadas sh
, e isso remove principalmente os recursos do shell, e não o contrário.