¿Cuál es el propósito de utilizar #!/usr/bin/env <sh|bash|python>tinglado en comparación con #!/bin/bash, #!/bin/sho #!/usr/bin/python?
command-line
bash
environment
Tuminoide
fuente
fuente

Respuestas:
Algunas personas pueden usar una pitón diferente (perl, etc.) que la del sistema.
/usr/bin/env pythonejecutaría la versión configurada como la actual, posiblemente haciendo que el script sea más portátil.Por otro lado, según se informa, algunos sistemas no tienen
/usr/bin/env. Además, no se puede usar#!/usr/bin/env foo xcomo reemplazo de#!foo x, porquefoo xse interpretará como un argumento único. Entonces, el valor del enfoque es discutible.fuente
info coreutils 'env invocation'mi punto de vista, esta forma de llamada se asegura de que sea un binario externo en lugar de un shell incorporado, pero no hay indicación de cómoenv pythonsería diferentepython.PATHprobablemente incluye/usr/local/binprimero. Si alguien ha instalado manualmente Python allí,envlo llamará, mientras que#!/usr/bin/pythonlo omitirá.virtualenves una herramienta bastante popular, e instala un ejecutable de Python en el directorio de trabajo. Necesitarías elenvtruco para que funcione correctamente.env pythones lo mismo quepython. Sin embargo, el problema es que no puedes escribir un shebang como#!python: debes especificar una ruta completa.