Le wiki de Greg a un article sur l'adaptation des scripts bash pour Dash qui souligne beaucoup de `` bashismes '' - des fonctionnalités supplémentaires qui ne sont pas standard mais qui font partie de bash. Éviter ces bashismes peut aider à rendre votre script plus convivial pour différents environnements. Cela répond particulièrement à certaines de vos questions. Par exemple, oui, il existe des opérateurs qui diffèrent (comme ==
), mais il existe un ensemble Posix standard qui devrait fonctionner dans tous les environnements.
Pour une lecture plus approfondie, vous pouvez consulter la norme Posix , à laquelle tous les obus doivent se conformer. En particulier, le volume sur "Shell & Utilities".
Ce que je trouve plus difficile que les différences de shell sont les différences de commande. De nombreux systèmes Linux ont GNU find
, mais si vous écrivez un script portable, ne comptez pas sur le vôtre man find
, car il existe de nombreux systèmes avec BSD find
, qui a un ensemble de fonctionnalités différent. Si vous écrivez des scripts pour busybox, vous constaterez qu'il existe différentes versions avec des nc
s entièrement différents . Voilà le genre de choses qui m'attirent toujours lorsque je déploie un script dans différents environnements.
Pour plus de lecture sur les bonnes pratiques de script shell, il existe également une bonne ressource sur le blog de David Pashley: Writing Robust Bash Shell Scripts
Assurez-vous également de lire les réponses et les commentaires de Gilles sur ce site. Il a beaucoup de conseils pour s'assurer que vous utilisez du code portable.