Qual é a diferença entre script bash e shell script [duplicado]

2

Como existem diferentes tipos de shells, Qual é a diferença entre os scripts bash e shell e existe algum script compatível em qual write pode ser executado em todos os shells do unix?

    
por JohnTheBeloved 16.10.2015 / 13:19

2 respostas

2

Um script bash é um script interpretado pelo Bourne-Again SHell e, portanto, é um script de shell. Pode ou não ser executado com sucesso por outros shells. Se você usar a sintaxe bash -específica, não poderá ter certeza de que ela será executada com outros shells.

Se você quiser escrever um script que possa ser interpretado por cada shell, você deve usar a sintaxe descrita no padrão POSIX em Linguagem de comandos do shell . É claro que nem todas as granadas honram o padrão POSIX, mas isso é o melhor que você pode fazer. Tais scripts podem ser muito portáveis e podem rodar em muitos Linux e * nixes da mesma maneira sem gerar erros.

Muitas shells e ferramentas de linha de comando procuram por uma variável de ambiente chamada $POSIXLY_CORRECT . Se isso for definido, essas ferramentas se comportarão como uma ferramenta em conformidade com o posix se comportaria.

Outra tentativa é o sinalizador --posix . Por exemplo, o GNU sed tem um sinalizador chamado --posix , que desabilita todas as extensões GNU e sed se comporta de maneira semelhante a um posix sed .

bash suporta as variáveis --posix e $POSIXLY_CORRECT .

Se você escrever seus scripts dessa maneira e testá-los com shells compatíveis com posix, você estará no melhor caminho.

    
por 16.10.2015 / 13:34
-2

Bash é uma mistura de um clone das características de Bourne Shell e ksh88 (parcialmente também ksh93).

A Shell hoje é um termo muito impreciso ...

Os scripts bash são scripts que fazem uso de recursos exclusivos do fornecedor da implementação bash .

Se você gosta de escrever scripts portáteis, existem dois métodos:

1) escreva scripts de acordo com o padrão POSIX, mas você precisa saber como chamar um shell POSIX em todas as plataformas. Observe que você não obterá um shell POSIX chamando /bin/sh . Você preferiria configurar seu PATH para a saída de getconf PATH an e chamar sh sem usar um PATH - você verá que isso não é útil para scripts instalados ...

2) escreva scripts que sejam compatíveis com o Bourne Shell. Esses scripts funcionarão com praticamente qualquer shell (basicamente baseado no Bourne Shell). Portanto, limite-se ao conjunto mínimo de recursos e suposições sobre restrições.

Se você gostaria de verificar o seu script em busca de portabilidade, recomendo que você verifique o script com a implementação do SYSVr4 Bourne Shell. Uma versão portátil do Bourne Shell SVr4 está no tarball do Schily Tools:

link

Compile e verifique o binário chamado osh . Este é o Bourne Shell SVR4 portátil.

    
por 16.10.2015 / 13:34