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/env
pero cuando lo uso, aparece el escepticismo.
¿Cuál es tu opinión?
Respuesta1
En la práctica, #!/usr/bin/env
es 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/sh
scripts que solo usan sh
funciones 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/env
otras cosas.
Una desventaja #!/usr/bin/env
es 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
env
só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.