Lo he visto en varios lugares, incluidas las recomendaciones en este sitio ( ¿Cuál es el Bash shebang preferido? ), Para usar #!/usr/bin/env bashcon preferencia #!/bin/bash. Incluso he visto a una persona emprendedora sugerir que el uso #!/bin/bashera incorrecto y que la funcionalidad bash se perdería al hacerlo.
Dicho todo esto, uso bash en un entorno de prueba estrictamente controlado donde cada unidad en circulación es esencialmente un clon de una sola unidad maestra. Entiendo el argumento de la portabilidad, aunque no es necesariamente aplicable en mi caso. ¿Hay alguna otra razón para preferir #!/usr/bin/env basha las alternativas y, suponiendo que la portabilidad fuera una preocupación, hay alguna razón para usarla que podría romper la funcionalidad?
envposible que no se encuentre en /usr/bin. Los comentarios de Shebang son una mala idea en mi humilde opinión. Si su intérprete de script predeterminado no maneja los comentarios shebang, es solo un comentario. Sin embargo, si sabe que el intérprete de guiones puede manejar comentarios shebang, y conoce la ruta de acceso a bash, no hay razón para no invocarlo usando su ruta absoluta a menos que la ruta sea demasiado larga (poco probable), o posiblemente pueda portar el guión a un sistema que no tiene bash ubicado en / bin. Por otra parte, las advertencias que mencioné anteriormente se aplican en ese caso ya que implica portabilidad.
/etco /bin/sh. bashes un complemento para la mayoría de los sistemas tipo Unix. Es solo Linux donde bashestá garantizado estar /biny muy probablemente también vinculado como /bin/sh. Desde que Linux se convirtió en el Unix moderno de facto para muchas personas, se ha olvidado el hecho de que podrían existir sistemas distintos de Linux. En mi propia respuesta a continuación, asumí Linux porque dijiste bash. Muchas de las cajas BSD con las que he trabajado ni siquiera lo tenían instalado.
/bin/bash. Bash no está instalado por defecto. Si lo quieres, tienes que hacerlo pkg install bash. Una vez instalado, se encuentra en /usr/local/bin/bash. No hay nada instalado en /bin/bashOpenBSD. Un shebang de #!/bin/basherror de voluntad y #!/usr/bin/env bashtendrá éxito.