Les scripts Dash, Ash et SH sont-ils 100% compatibles?

Je voulais savoir si les scripts écrits pour dash, ash et sh sont 100% compatibles?

Y a-t-il des fonctionnalités supplémentaires à tiret ou ash, ou changement de syntaxe?

Daprès ce que jai entendu, ash est un descendant direct de sh.

Commentaires

  • ash est une forme rayée de bash
  • Source? Je nai rien vu qui dise que cendre est lié à bash
  • Pourquoi les gens ' ne soumettraient-ils pas des correctifs à bash au lieu de créer toutes sortes de coquilles, ça me bouleverse tout le temps. Si vous voulez vraiment savoir, lisez le manuel, par exemple man ash
  • Correct, il ' nest pas un descendant de frapper. Il serait plus précis de dire quils ' descendant de sh (le shell Bourne original), mais que ' nest pas entièrement correct non plus .
  • Vous pouvez utiliser lutilitaire checkbashisms pour tester que votre script est compatible POSIX.

Réponse

La réponse courte est non, ils « nest pas 100% compatible.

Mais la plupart des shells sont assez proches de la base, donc vous ne rencontreriez que rarement des incohérences. En fait, la plupart des shells ne diffèrent pas beaucoup par la syntaxe ajoutée, mais par certaines fonctionnalités supplémentaires telles que la complétion par tabulation et autres.

De plus, dash est en quelque sorte un descendant de ash — ou port de BSD vers Linux, pour être précis. Et tous doivent être des descendants ou des implémentations différentes de sh. En fait, sh est sur la plupart des systèmes juste un lien symbolique vers bash, dash ou autre chose. Ce qui compte, cest la conformité POSIX — et lorsque vous écrivez des scripts selon les standards, vous ne rencontrez pas de problèmes.

La différence entre ces shells réside dans les optimisations et performances. Ils « sont moins riches en fonctionnalités que bash, mais ce sont des shells tout à fait légitimes. Bash est riche en fonctionnalités pour le travail interactif, mais utilise plus de mémoire, par exemple.

Commentaires

  • Mais pour lutilisation des scripts, ils sont compatibles?
  • Et à propos de la conformité POSIX, même si je suis ce standard, si un script est écrit pour Bash, je ne pense pas quil fonctionnera sur nimporte quel sh ou son descendant
  • Ils devraient être compatibles les uns avec les autres si vous ' nutilisez pas certaines fonctionnalités obscures. Mais si vous utilisez un script bash, vous risquez de rencontrer dautres problèmes.
  • na jamais eu lintention dutiliser bash avec sh, ash ou dash. Quelles sont ces fonctionnalités obscures?
  • De nombreuses fonctionnalités plus récentes de bash ' sont des ajouts par rapport à POSIX, il est donc de plus en plus probable que vous écririez du code non portable si vous ' les utilise. IIRC, même la construction [[]] nest pas dans sh. Attention également, si vous ' nécrivez pas un script shell pur, des différences doutils entrent également en jeu (différentes versions de sed, grep, awk …).

Réponse

Il faut mentionner que sur certains systèmes, notamment Debian, / bin / ash nest pas disponible:

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

Commentaires

  • Ils peuvent avoir des cendres occupées.
  • Cela dit, il existe de nombreux systèmes qui ' nont pas bash non plus.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *