La mayoría del código que escribo está en PHP. Recientemente comencé a aprender scripting de shell. La mayoría de los recursos y tutoriales que he encontrado son específicos de Bash. Algunos advierten sobre los bashismos y otros no. He estado leyendo mucho aquí y Stack Overflow.
Cada vez que una respuesta usa bashismos , alguien inevitablemente comentará para decir:
No deberías usar <insertar bashism aquí>. No es portátil
Esto sucede incluso cuando se etiquetó la pregunta bash. Para mí, eso es como decirle a un programador de PHP que no deben usar código nuevo en PHP 5 porque no se puede usar con PHP 4. O decirle a alguien que no deberían escribir algo para Mac porque no se puede usar en Windows
Cuando escribo en PHP, elijo un requisito mínimo y escribo código compatible con reenvío . No me preocupa hacer que sea retrocompatible .
Si lo uso #!/bin/bash
como shebang, ¿por qué no debería usar bashisms? Estoy empezando a tener la impresión de que a algunas personas les gusta golpear los bashismos (juego de palabras) solo por el simple hecho de hacerlo.
La gente a menudo usa bash
e shell
intercambiablemente, probablemente debido al hecho de que bash es el shell predeterminado en muchos sistemas. Así que puedo entender agregar un comentario para advertir que el código usa basismos, pero no entiendo la implicación de que está mal usarlos.
Obviamente, si estoy escribiendo un guión estrictamente para uso personal, puedo escribirlo en el idioma que desee. Pero me gustaría pensar que parte del código que escribo podría ser útil para otros.
Intenté buscar una respuesta a mi pregunta antes de publicar. Encontré mucha información sobre cómo probar la portabilidad, pero no pude encontrar nada sobre cuándo es importante hacerlo.
Entonces, ¿cuándo es importante escribir scripts portátiles?
Por ejemplo,
- ¿Qué tipos de scripts deberían ser lo más portátiles posible?
- ¿Qué tan comunes son los sistemas que no tienen instalado Bash?
- si el sistema tiene instalado Bash, ¿también tendrá la versión GNU de find y otras utilidades?
bash
etiqueta sola, alguien comenta "Es bashism y no portable". Cuando respondo una pregunta que está etiquetada C
, no me importa si es portátil Java
o no.
bash
característica específica, y no portátil, tal como señalaría que se está utilizando una extensión específica de GNU para alguna utilidad (a pesar de que la pregunta fue etiquetada como Linux). Nunca he visto a nadie decir "esto es un bashism y nunca deberías usarlo".