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

2

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

  • shell
  • shell C
  • Bash shell
  • Bourne shell
  • shell korn

Tantos "conchas"! Com os respectivos, como eu digo para quais interpretadores meu sistema Linux está configurado? Se eu não tenho suporte para, digamos, korn , como eu configuraria meu sistema para suportá-lo?

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

Obrigado antecipadamente!

    
por pnongrata 04.02.2012 / 21:29

2 respostas

3

O problema que você abordou é o motivo pelo qual temos a noção de Shell Compatíveis com POSIX e a capacidade de fazer código "portátil". Contanto que você esteja de acordo com 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 é apenas Linux, cada distro Linux que eu já vi vem com bash como o shell padrão, então você pode ter certeza de que um script Bash 3.x funcionará em apenas sobre qualquer distribuição Linux lá fora.

    
por 04.02.2012 / 21:36
0

O primeiro UNIX estava na AT & T. O primeiro shell foi o shell Bourne. Foi muito legal, mas tinha algumas limitações sérias.

Quando os caras da Berkeley começaram a jogar com o UNIX e tentaram melhorar, eles saíram com a shell C . Ele tinha uma linguagem de programação diferente (embora também defeituosa em seu próprio caminho), mas era muito melhor no uso interativo. Devido às suas vantagens no uso interativo, tornou-se muito popular em qualquer UNIX que descende do Berkeley UNIX.

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

Enquanto isso, os caras do UNIX não apenas sentavam em suas mãos. Dave Korn (cara legal) criou um novo shell chamado ... shell Korn. Ele seguiu o modelo de programação que o shell Bourne criou (provavelmente superior ao modelo csh). Tornou-se muito popular, tornou-se o dia a dia de muitas pessoas. Tornou-se parte da especificação UNIX também. Isso gerou um clone de código aberto bastante popular chamado pdksh, que é bastante próximo (não é 100%) compatível. Eventualmente, a AT & T divulgou o código como código aberto.

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

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

TL; DR Então, o que usar? Se você está codificando um script de inicialização, você quer usar / bin / sh, que é compatível com POSIX / Original Bourne. O idioma é esparso, mas será executado, mesmo se discos como / usr não estiverem disponíveis.

Se não forem scripts de inicialização, você terá mais opções. Se você está apenas em sua máquina, use qualquer coisa que esteja atualmente disponível. Você controla sua máquina. Se você está escrevendo para dar para outras pessoas, eu usaria / bin / sh ou bash. / bin / sh embora simples, está sempre disponível. O bash é open source, então quase sempre disponível, tem idade suficiente para estar em todos os lugares, mas novo o suficiente para ter alguns novos recursos. Csh não está disponível em todos os lugares e nem é zsh.

    
por 13.02.2012 / 00:27