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