Como diferentes scripts de shell são mapeados para diferentes sistemas operacionais

Como diferentes scripts de shell são mapeados para diferentes sistemas operacionais

Novo no Linux e tenho algumas perguntas sobre scripts de shell:

  • concha
  • Concha C
  • Concha bash
  • Concha Bourne
  • casca de milho

Tantas "conchas"! Com relação a isso, como posso saber para quais intérpretes meu sistema Linux está configurado? Se eu não tiver suporte para, digamos, korn, como configuraria meu sistema para suportá-lo?

Além disso, qual desses shells é mais "ativo" (atualizado e mantido com mais frequência)?

Desde já, obrigado!

Responder1

O problema que você abordou é a razão pela qual temos a noção deConchas compatíveis com POSIXe a capacidade de criar código "portátil". Contanto que você siga a sintaxe compatível com POSIX apresentada nesse link, você pode ter certeza de que seu código é portátil.

Dito isto, se o seu público-alvo for apenas Linux, todas as distros Linux que eu já vi vêm bashcomo shell padrão, para que você possa ter certeza de que um script compatível com Bash 3.x funcionará em praticamente qualquer distribuição Linux existente. .

Responder2

O primeiro UNIX foi na AT&T. A primeira concha foi a concha Bourne. Foi muito legal, mas tinha algumas limitações sérias.

Quando os caras daBerkeleycomecei a brincar com UNIX e tentei melhorá-lo, eles lançaram o shell C. Tinha uma linguagem de programação diferente (embora também falho à sua maneira), mas era muito melhor no uso interativo. Devido às suas vantagens no uso interativo, tornou-se muito popular em qualquer UNIX descendente do Berkeley UNIX.

O shell C (ou csh) gerou um clone de código aberto chamado tcsh. Se você usa csh, provavelmente não usa csh 'true' ou original, mas sim tcsh.

Enquanto isso, os caras do UNIX não ficaram parados. Dave Korn (cara legal) criou um novo shell chamado... Korn shell. Ele seguiu o modelo de programação criado pelo Bourne Shell (sem dúvida superior ao modelo csh). Tornou-se muito popular, tornou-se a concha do dia a dia de muitas pessoas. Tornou-se parte das especificações do UNIX também. Isso gerou um clone de código aberto bastante popular chamado pdksh, que é bastante próximo (embora não seja 100%) compatível. Eventualmente, a AT&T lançou o código como código aberto.

Os caras do GNU queriam fazer seu próprio sistema UNIX, então eles precisavam de um shell, que pudessem incluir sem se preocupar com questões de licenciamento. Eles criaram o bash, o Bourne Again SHell. Principalmente compatível com o Bourne original e pegando ideias de Csh e Ksh, tornou-se popular pela facilidade de uso e porque veio com todos os Linux. Houve várias versões, a versão 2 é a primeira muito utilizável e agora está na versão 4 com novos recursos.

Então veio zsh. Ele também seguiu a sintaxe do shell Bourne e copiou o que havia de bom no shell Bourne, ksh, csh e bash. Possui, sem dúvida, a sintaxe mais avançada com recursos não encontrados em outros shells.

DREntão, o que usar? Se você estiver codificando um script de inicialização, você deseja usar /bin/sh, que é compatível com POSIX/Original Bourne. A linguagem é escassa, mas será executada mesmo se discos como /usr não estiverem disponíveis.

Se não for um script de inicialização, você terá um pouco mais de escolha. Se você estiver apenas na sua máquina, use qualquer coisa que esteja disponível no momento. Você controla sua máquina. Se você está escrevendo para doar para outras pessoas, eu usaria /bin/sh ou bash. /bin/sh embora simples, está sempre disponível. bash é de código aberto, quase sempre disponível, é antigo o suficiente para estar em todos os lugares, mas novo o suficiente para ter alguns novos recursos. O Csh não está disponível em todos os lugares, nem o zsh.

informação relacionada