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

2

Gostaria de saber se é uma boa prática, de acordo com você, usar este she-bang:

#!/usr/bin/env bash

ao invés de

#!/bin/bash

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

qual e sua OPINIAO?

Benoit
fonte

Respostas:

2

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

Minha política geral é usar #!/bin/shscripts que usem apenas shrecursos portáteis (ou seja, somente recursos POSIX se eu me preocupo apenas com unidades modernas, e somente recursos Bourne se me preocupo 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 que você passe nenhuma opção ao intérprete. Com alguns intérpretes, isso pode ser contornado, especificando as opções como diretivas ou transformando a segunda linha em um trecho de idioma duplo que chama o intérprete quando executado por sh e não faz nada quando executado pelo intérprete de destino. Existe um idioma perl comum , por exemplo (útil para passar -T).

Gilles
fonte
1

envsó é útil se o script for usado em vários sistemas em que 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.

Ignacio Vazquez-Abrams
fonte