Como regra geral, usar env
é mais portável. É improvável, mas teoricamente concebível, encontrar um sistema que não tenha bash
at /bin/bash
. Também é possível que o usuário que está executando o script tenha sua própria versão bash que é de alguma forma diferente.
Usar env
significa que a primeira bash
instância no caminho do usuário será escolhida. Isso significa que #!/usr/bin/env bash
sempre funcionará com a versão bash escolhida pelo usuário e sempre deverá ser avaliada como bash
disponível, mesmo em sistemas não padrão. Isso se torna muito mais importante se você estiver usando outro interpretador, e não bash. O Perl, por exemplo, pode ser instalado em locais diferentes em sistemas diferentes, mas env
o encontrará independentemente.
Portanto, usar #!/usr/bin/env PROGRAM
é um bom hábito, pois torna seus scripts mais portáveis para diferentes versões * nix.