De usar /usr/bin/env como Sha-bang

De usar /usr/bin/env como Sha-bang

Me gustaría saber si, según usted, es una buena práctica utilizar este she-bang:

#!/usr/bin/env bash

en lugar de

#!/bin/bash

Este artículoParece abogar por el uso de /usr/bin/envpero cuando lo uso, aparece el escepticismo.

¿Cuál es tu opinión?

Respuesta1

En la práctica, #!/usr/bin/enves portátil para casi cualquier sistema que lo entienda #!. Es un modismo útil para invocar un programa que podría estar en cualquier lugar de $PATH. Si codifica la ruta al intérprete, es posible que su script no funcione si lo copia en una máquina diferente.

Mi política general es utilizar #!/bin/shscripts que solo usan shfunciones portátiles (es decir, solo funciones POSIX si solo me interesan los Unices modernos, y solo funciones Bourne si me importan sistemas más antiguos, como versiones anteriores de Solaris) y #!/usr/bin/envotras cosas.

Una desventaja #!/usr/bin/enves que no te permite pasar ninguna opción al intérprete. Con algunos intérpretes, esto se puede solucionar especificando las opciones como directivas, o haciendo que la segunda línea sea un fragmento de código de dos idiomas que invoca al intérprete cuando lo ejecuta sh y no hace nada cuando lo ejecuta el intérprete de destino. Hay unamodismo común de Perl, por ejemplo (útil para pasar -T).

Respuesta2

envsólo es útil si el script se va a utilizar en múltiples sistemas donde la ubicación de los archivos binarios puede variar. Si el script sólo se utiliza en un único sistema o en una red homogénea, entonces no es necesario.

información relacionada