¿Los guiones dash, ash y sh son 100% compatibles?

Quería saber si los scripts escritos para dash, ash y sh son 100% compatibles.

¿Hay alguna característica adicional para guión o ash, o cambio de sintaxis?

Por lo que escuché, ash es un descendiente directo de sh.

Comentarios

  • ash es una forma rayada de bash
  • ¿Fuente? No vi nada que dijera que ash está relacionado con bash
  • ¿Por qué no ' t la gente simplemente envía parches a bash en lugar de crear todo tipo de shells, eso me ayuda todo el tiempo. Si realmente quieres saberlo, lee el manual, por ejemplo, man ash
  • Correcto, ' no es descendiente de intento. Sería más preciso decir que ' son descendientes de sh (el shell Bourne original), pero que ' tampoco es completamente correcto .
  • Puede usar la utilidad checkbashisms para probar que su script sea compatible con POSIX.

Respuesta

La respuesta corta es no, ellos «no son 100% compatibles.

Pero la mayoría de los shells son bastante parecidos a los básicos, por lo que rara vez se encontrará con inconsistencias. De hecho, la mayoría de los shells no se diferencian mucho por la sintaxis agregada, sino por algunas características adicionales como completar tabulación y similares.

Además, dash es una especie de descendiente de ash — o puerto de BSD a Linux, para ser precisos. Y todos deben ser descendientes o implementaciones diferentes de sh. De hecho, sh es en la mayoría de los sistemas solo un enlace simbólico a bash, dash o algo más. Lo que importa es el cumplimiento de POSIX — y cuando escribe scripts de acuerdo con los estándares, no tendrá problemas.

La diferencia entre esos shells está en las optimizaciones y rendimiento. Son menos ricos en funciones que bash, pero son shells completamente legítimos. Bash tiene muchas funciones para el trabajo interactivo, pero utiliza más memoria, por ejemplo.

Comentarios

  • Pero para el uso de scripts, ¿son compatibles?
  • Y sobre el cumplimiento de POSIX, incluso si sigo ese estándar, si un script está escrito para Bash, no creo que se ejecute en ningún sh o su descendiente
  • Deberían ser compatibles entre sí si ' no está utilizando algunas características poco conocidas. Pero si usa el script bash, es posible que tenga más problemas.
  • Nunca tuvo la intención de usar bash con sh o ash o dash. ¿Cuáles son esas características oscuras?
  • Muchas de las características más nuevas de bash ' son adiciones a POSIX, por lo que es cada vez más probable que escriba código intransitable si ' los estás usando. IIRC incluso el constructo [[]] no está en sh. También tenga cuidado, que si ' no está escribiendo un script de shell puro, también entran en juego las diferencias en las herramientas (diferentes versiones de sed, grep, awk …).

Respuesta

Debe mencionarse que en algunos sistemas, notablemente Debian, / bin / ash no está disponible:

$ type ash dash bash: type: ash: not found dash is /bin/dash 

Comentarios

  • Pueden tener busybox ash.
  • Dicho esto, hay muchos sistemas que tampoco ' tienen bash.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *