Script de shell escrito em um shell diferente do que meu shell atual

2

Se o script de shell for

#!/bin/sh

Mas o valor do meu $ SHELL é ksh.

Será que vai fazer a diferença se eu mudei meu ksh para sh e, em seguida, executei o script. ie. um script terá um comportamento diferente dependendo do tipo de shell que está sendo executado.

    
por Kraken 20.10.2014 / 09:41

2 respostas

4

will a script have different behaviour depending on what type of shell is executing it.

  • No sentido de que bash script.sh e ksh script.sh provavelmente se comportarão de maneira diferente, sim. Comumente, essa diferença será que um deles funciona e um erro, mas há um intervalo de opções. Muitos scripts simples terão o mesmo comportamento em shells comuns, mas scripts mais complexos provavelmente atingirão uma das muitas diferenças entre os idiomas fornecidos por shells diferentes.

  • Um script se comportará de maneira diferente dependendo do seu valor de SHELL ? Apenas se o script invocar $SHELL , ou testar ou usar seu valor, direta ou indiretamente. Scripts de shell comuns geralmente não, mas podem.

  • Um script se comportará de maneira diferente dependendo do shell pai a partir do qual foi invocado? Extremamente raramente - o script teria que fazer um bom trabalho para detectar isso, na medida em que quase teria que ser de propósito.

Eu acho que seu caso de uso está executando ./script.sh , que é um script sh , do seu shell interativo, que é ksh . Se isso está certo, estamos no último caso acima, e o script quase certamente se comportará da mesma maneira como se você estivesse usando qualquer outra casca. O sistema sempre iniciará um novo processo /bin/sh e informará para executar o script.

    
por 20.10.2014 / 09:54
0

Não, isso não faz diferença. #!/usr/bin/sh significa "use /usr/bin/sh para interpretar este script para que o valor de seu $SHELL não faça diferença.

    
por 20.10.2014 / 14:24