La plupart du code que j'écris est en PHP. J'ai récemment commencé à apprendre les scripts shell. La plupart des ressources et des didacticiels que j'ai rencontrés sont spécifiques à Bash. Certains mettent en garde contre les bashismes et d'autres non. J'ai beaucoup lu ici et Stack Overflow.
Chaque fois qu'une réponse utilise des bashismes , quelqu'un commentera inévitablement:
Vous ne devez pas utiliser <insérer le bashisme ici>. Ce n'est pas portable.
Cela se produit même lorsque la question a été taguée bash. Pour moi, c'est comme dire à un programmeur PHP qu'il ne devrait pas utiliser de code nouveau dans PHP 5 car il ne peut pas être utilisé avec PHP 4. Ou dire à quelqu'un qu'il ne devrait pas écrire quelque chose pour Mac car il ne peut pas être utilisé sous Windows.
Lorsque j'écris en PHP, je choisis une exigence minimale et j'écris du code compatible avec l' avant . Je ne m'inquiète pas de le rendre compatible à l' envers .
Si j'utilise #!/bin/bash
comme shebang, pourquoi ne devrais-je pas utiliser des bashismes? Je commence à avoir l'impression que certaines personnes aiment bash bashismes (jeu de mots) juste pour le plaisir.
Les gens utilisent souvent bash
et de shell
manière interchangeable - probablement en raison du fait que bash est le shell par défaut sur de nombreux systèmes. Je peux donc comprendre l'ajout d'un commentaire pour avertir que le code utilise des bashismes, mais je ne comprends pas l'implication qu'il est mal de les utiliser.
Évidemment, si j'écris un script strictement pour un usage personnel, je peux l'écrire dans la langue que je veux. Mais j'aimerais penser qu'une partie du code que j'écris pourrait être utile à d'autres.
J'ai essayé de chercher une réponse à ma question avant de poster. J'ai trouvé beaucoup d'informations sur la façon de tester la portabilité, mais je n'ai rien trouvé sur le moment où il est important de le faire.
Alors, quand est-il important d'écrire des scripts portables?
Par exemple,
- quels types de scripts devraient être aussi portables que possible?
- Quelle est la fréquence des systèmes sur lesquels Bash n'est pas installé?
- si le système a installé Bash, aura-t-il également la version GNU de find et d'autres utilitaires?
bash
balise seule, quelqu'un commente "C'est du bashisme et pas portable". Lorsque je réponds à une question étiquetée C
, je me fiche que ce soit portable Java
ou non.
bash
fonctionnalité spécifique et non portable, tout comme je voudrais souligner qu'une extension spécifique GNU est utilisée pour un utilitaire (même si la question a été étiquetée comme Linux). Je n'ai jamais vu personne dire "c'est un bashisme et vous ne devriez jamais l'utiliser".