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/env
mas 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/sh
scripts que usam apenas sh
recursos 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/env
outros.
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
env
só é ú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.