GNU/Linux >> Tutoriels Linux >  >> Linux

Comment tester la conformité Posix des scripts Shell ?

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 !


Linux
  1. Existe-t-il des conventions de nommage pour les variables dans les scripts shell ?

  2. Comment tester quel shell j'utilise dans un terminal ?

  3. Extensions de fichiers pour les scripts shell Unix ?

  4. Comment exécuter des scripts Python à partir du shell

  5. Comment faire écho à une nouvelle ligne dans les scripts shell bash

Comment créer des scripts shell

Shell Scripting pour les débutants - Comment écrire des scripts Bash sous Linux

Comment utiliser if-else dans les scripts shell ?

Comprendre la boucle for dans les scripts shell

Comment lire les arguments de ligne de commande dans les scripts shell ?

comment modifier /etc/hosts à partir de scripts shell ?