Um script de shell será executado no Solaris? se não, qual é o caminho mais rápido para torná-lo compatível

1

Eu escrevi um script de shell com #! / bin / sh shebang. Ouvi dizer que não vai funcionar ao lado do Solaris. E que eu tenho que escrever um script de shell korn.

Mas em um dos threads um indivíduo mencionou que é possível fazer a transição simplesmente alterando o shebang no topo. O que permite apontar para um diretório diferente no Solaris onde sh está presente.

Eu não tenho como saber se isso é verdade e eu adoraria se você esclarecesse isso para mim.

Esse método funcionará? E esta é a melhor maneira?

    
por Naveen Dennis 24.10.2014 / 03:54

2 respostas

1

Assumindo que seu script é portátil, ou seja, não usa bashisms, GNUisms ou qualquer outro que não seja POSIX, ele deve funcionar com a maioria dos sistemas operacionais Unix e Linux com seu #!/bin/sh shebang.

No entanto, no Solaris 10 e versões anteriores, /bin/sh não é o shell POSIX, mas o shell Bourne legado, que é anterior ao POSIX e, em seguida, está faltando recursos que vieram depois com o padrão.

Seu script provavelmente será quebrado se for deixado como está, mas isso pode ser corrigido facilmente definindo o shebang para apontar para o shell Solaris compatível com POSIX desta maneira:

#!/usr/xpg4/bin/sh

Para ter certeza de que você também escolherá os utilitários compatíveis com POSIX quando eles diferirem dos padrões do Solaris, você também deve colocar a seguinte linha no início do seu script:

PATH=$(getconf PATH):PATH
    
por 26.10.2014 / 00:35
-1

Sim, você está certo.

No solaris e no Linux é diferente, então, se precisarmos escrever um único script, podemos usá-lo desta maneira.

#!/usr/bin/env sh

< Your Code>

Isso funcionará.

No Linux.

$which sh
/bin/sh

No Solaris.

$which sh
/usr/bin/sh

Apenas para evitar esse caminho em um único script, podemos usar o comando env .

    
por 24.10.2014 / 09:16

Tags