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

2

Eu gostaria de saber se é uma boa prática, de acordo com você, usar essa she-bang:

#!/usr/bin/env bash

em vez de

#!/bin/bash

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

Qual é a sua opinião?

    
por Benoit 07.10.2010 / 10:06

2 respostas

2

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

Minha política geral é usar #!/bin/sh para scripts que usam apenas recursos portáveis de sh (ou seja, somente recursos POSIX se eu me importo apenas com unices modernos e somente recursos Bourne se eu me preocupo com sistemas mais antigos, como o Solaris antigo lançamentos) e #!/usr/bin/env caso contrário.

Uma desvantagem de #!/usr/bin/env é que ela 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 fazendo com que a segunda linha seja um trecho de linguagem dupla que invoca o intérprete quando executado por sh e não faz nada quando executado pelo intérprete de destino. Há um idioma perl comum , por exemplo (útil para passar -T ).

    
por 08.10.2010 / 01:25
1

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

    
por 07.10.2010 / 10:19

Tags