Considérant que POSIX est la chose la plus proche d'une norme commune parmi tous les unix, je suis intéressé à savoir s'il existe un shell qui le prend en charge exclusivement. Alors que la plupart des shells modernes prennent en charge POSIX (et exécuteront des scripts compatibles POSIX sans aucun problème), ils ne font pas un bon travail pour signaler les fonctionnalités non conformes.
Existe-t-il un shell qui implémente POSIX et POSIX uniquement, de manière à générer une erreur pour toute fonctionnalité non conforme ?
MODIFIER Je tiens à préciser que je ne demande pas de conseils généraux pour l'écriture de scripts shell portables. La question connexe mentionnée dans les commentaires couvrait déjà cela. J'ai pensé à cette question quand j'ai découvert que bash
a un --posix
mais seulement pour découvrir qu'elle n'affecte que certains comportements d'initialisation, ce qui n'est pas exactement ce que je recherche.
Réponse acceptée :
Malheureusement, « portable » est généralement une exigence plus forte que « conforme à POSIX » pour les scripts shell. Autrement dit, écrire quelque chose qui s'exécute sur n'importe quel shell POSIX n'est pas trop difficile, mais le faire fonctionner sur n'importe quel shell du monde réel est plus difficile.
Vous pouvez commencer par installer chaque shell dans votre gestionnaire de paquets, en particulier le posh
de Debian ressemble à ce que vous voulez (Shell ordinaire conforme à la politique). La politique de Debian est POSIX avec quelques exceptions (echo -n
spécifié, local
…).
Au-delà de cela, les tests doivent couvrir quelques shells (/bin/sh en particulier) sur une gamme de plates-formes. Je teste sur Solaris (/bin/sh et xpg4/sh), et BSD. AIX et HP-UX sont très conformes et ne posent aucun problème. bash est un petit monde à part.
Je recommanderais le guide Autoconf du shell portable, qui est absolument génial et fait gagner beaucoup de temps. De gros morceaux sont obsolètes, mais ça va; ignorez simplement TruUnix et Ultrix et ainsi de suite si vous ne vous en souciez pas !