¿Cuándo es mejor usar #! / Bin / bash en lugar de #! / Bin / sh en un script de Shell?

Cuando está creando un nuevo script de shell, quiere asegurarse de que esté lo más libre de problemas posible, pero a veces puede ser un poco confuso saber qué shebang es el mejor para usar. En esa nota, la publicación de preguntas y respuestas de SuperUser de hoy tiene la respuesta a la pregunta de un lector confuso.

La sesión de preguntas y respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, un grupo de sitios web de preguntas y respuestas impulsado por la comunidad.

La pregunta

El lector de superusuario Hendre quiere saber cuándo es mejor usar #! / Bin / bash en lugar de #! / Bin / sh en scripts de shell:

¿Cuándo es más apropiado usar #! / Bin / bash en lugar de #! / Bin / sh en un script de shell?

¿Cuándo es mejor usar #! / Bin / bash en lugar de #! / Bin / sh en un script de shell?

La respuesta

Grawity, colaborador de superusuario, tiene la respuesta para nosotros:

En breve:

  • Hay varios shells que implementan un superconjunto de la especificación sh de POSIX . En diferentes sistemas, / bin / sh puede ser un enlace a ash, bash, dash, ksh, zsh, etc. Sin embargo, siempre será compatible con sh, nunca csh o fish.
  • Siempre que se ciña solo a las funciones sh, puede (y probablemente debería) usar #! / Bin / sh y el script debería funcionar bien, sin importar qué shell sea.
  • Si comienza a usar funciones específicas de bash (es decir, matrices), debe solicitar específicamente bash porque, incluso si / bin / sh ya invoca bash en su sistema, es posible que no lo haga en el sistema de todos los demás y su script no se ejecutará allí. Lo mismo se aplica a zsh y ksh, por supuesto.
  • Incluso si el script es solo para uso personal, es posible que observe que algunos sistemas operativos cambian / bin / sh durante las actualizaciones. Por ejemplo, en Debian solía ser bash, pero luego fue reemplazado por el guión mínimo. Los scripts que usaban bashismos pero tenían #! / Bin / sh de repente se rompieron.

Sin embargo:

  • Incluso #! / Bin / bash no es tan correcto. En diferentes sistemas, bash puede vivir en / usr / bin , / usr / pkg / bin o / usr / local / bin .
  • Una opción más confiable es #! / Usr / bin / env bash , que usa $ PATH . Aunque la herramienta env en sí tampoco está estrictamente garantizada, / usr / bin / env todavía funciona en más sistemas que / bin / bash .

¿Tiene algo que agregar a la explicación? Habla en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange expertos en tecnología? Consulte el hilo de discusión completo aquí .

Crédito de la imagen: Wikipedia

responroot

Entradas recientes

Steamlytics: La nueva herramienta imprescindible para los gamers de Steam

  El mundo del gaming ha experimentado un crecimiento exponencial en los últimos años. La…

1 año hace

Cuándo reemplazar su antigua unidad flash USB

Stokkete/Shutterstock.com ¿Sigue utilizando una unidad flash USB obsoleta para almacenar sus archivos? ¿Por qué no…

3 años hace

¿Qué es una pantalla Nano IPS?

LG Los fabricantes siempre intentan mejorar el rendimiento de imagen de los monitores. Como resultado,…

3 años hace

10 formas de jugar con un presupuesto bajo (o nulo)

Patty Chan/Shutterstock.com Si cree en lo que ve en las redes sociales, puede pensar en…

3 años hace

¿Demasiadas suscripciones? Aquí está cómo empezar a cortarlos

Seksan.TH/Shutterstock.com Los servicios de suscripción como Netflix, Game Pass y Spotify nos permiten consumir tantas…

3 años hace

Cómo configurar la puerta de enlace predeterminada en Linux

fatmawati achmad zaenuri/Shutterstock El acceso a Internet, oa cualquier otra red, se rige por la…

3 años hace