De usar /usr/bin/env como Sha-bang

De usar /usr/bin/env como Sha-bang

Gostaria de saber se é uma boa prática, na sua opinião, usar este she-bang:

#!/usr/bin/env bash

em vez de

#!/bin/bash

Este artigoparece defender o uso de /usr/bin/envmas quando eu uso, aparece o ceticismo.

qual e sua OPINIAO?

Responder1

Na prática, #!/usr/bin/envé portável para quase todos os sistemas que entendem #!. É uma expressão útil para invocar um programa que pode estar em qualquer lugar do $PATH. Se você codificar o caminho para o interpretador, seu script poderá não funcionar se você copiá-lo para uma máquina diferente.

Minha política geral é usar #!/bin/shscripts que usam apenas shrecursos portáteis (ou seja, apenas recursos POSIX se eu me importar apenas com unidades modernas, e apenas recursos Bourne se eu me importar com sistemas mais antigos, como versões mais antigas do Solaris) e #!/usr/bin/envoutros.

Uma desvantagem #!/usr/bin/envé que ele não permite passar nenhuma opção ao intérprete. Com alguns intérpretes, isso pode ser contornado especificando as opções como diretivas ou fazendo com que a segunda linha seja um trecho de idioma duplo que invoca o intérprete quando executado por sh e não faz nada quando executado pelo intérprete de destino. Há umidioma perl comum, por exemplo (útil para passar -T).

Responder2

envsó é útil se o script for usado em vários sistemas onde a localização dos binários pode variar. Se o script for usado apenas em um único sistema ou em uma rede homogênea, não será necessário.

informação relacionada