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/env
mas quando eu o uso, o ceticismo aparece.
qual e sua OPINIAO?
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/env
mas quando eu o uso, o ceticismo aparece.
qual e sua OPINIAO?
Respostas:
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/sh
scripts que usem apenas sh
recursos 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/env
outros.
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
).
env
só é ú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.