Respostas:
Algumas pessoas podem usar um python diferente (perl, etc.) que o sistema. /usr/bin/env python
executaria a versão configurada como a atual, possivelmente tornando o script mais portátil.
Por outro lado, alguns sistemas não possuem /usr/bin/env
. Além disso, você não pode usar #!/usr/bin/env foo x
como um substituto para #!foo x
, porque foo x
será interpretado como um único argumento. Portanto, o valor da abordagem é discutível.
info coreutils 'env invocation'
que posso ver, essa forma de chamada garante que seja binário externo, em vez de embutido no shell, mas nenhuma indicação de como env python
seria diferente python
?
PATH
provavelmente inclui /usr/local/bin
primeiro. Se alguém instalou o python manualmente lá, env
o chamará, enquanto #!/usr/bin/python
o ignorará.
virtualenv
é uma ferramenta bastante popular e instala um executável python no diretório de trabalho. Você precisaria do env
truque para fazê-lo funcionar corretamente.
env python
é o mesmo que python
. No entanto, o problema é que você não pode escrever um shebang como #!python
: você precisa especificar um caminho completo.