L'inclusion de tableaux dans POSIX entraînerait-elle une rupture du standard POSIX?
La possibilité d'utiliser des tableaux dans bash et ksh93 est très pratique lorsque le besoin se fait sentir d'accéder rapidement à des éléments de plusieurs tableaux. Voici un exemple rapide:
#!/bin/ksh93 --
array1=(1 2 3 4 5 6 7)
array2=(8 9 10 11 12 13 14)
printf '%s\n' "Third element of array1 is ${array1[2]} and fifth element of array2 is ${array2[4]}"
Je me souviens avoir lu au passage qu'au moins une partie de la raison pour laquelle les tableaux ne sont pas inclus dans le standard POSIX est que cela briserait les choses. Est-ce vrai? Quelles choses se briseraient?
Réponses
Je ne sais pas à quel texte vous faites référence, mais je suis à peu près sûr que ce n'est pas le cas, car bash
et ksh93
sont censés être compatibles POSIX, et si les tableaux provoquaient la rupture des shells POSIX, alors ces shells ne seraient pas conformes .
Cependant, cela ne signifie pas que POSIX est susceptible de les inclure. Premièrement, bash
et ksh93
peut ne pas implémenter les tableaux de la même manière, et POSIX ne voudrait pas spécifier une fonctionnalité qui se comporte différemment dans les implémentations historiques largement déployées.
Deuxièmement, POSIX ne spécifie généralement pas beaucoup de fonctionnalités. Ce n'est que maintenant qu'il y a même une proposition d'exiger local
, qui est largement déployée dans presque tous les shell POSIX open source, sauf ksh93
. De même, il serait possible d'utiliser une vi
implémentation qui implémenterait uniquement les fonctionnalités POSIX, mais la plupart des utilisateurs la trouveraient assez rare sur les fonctionnalités.
Enfin, POSIX préfère standardiser les choses qui sont déjà disponibles dans la plupart des implémentations, et les tableaux shell ne le sont pas. dash
en manque, tout comme la plupart des shells avec lesquels il partage la lignée, ainsi que de minuscules implémentations telles que busybox
. Un environnement POSIX complet peut être relativement petit, et c'est très pratique pour les personnes qui ont besoin de travailler avec des systèmes embarqués, donc les gentils à nantis sont souvent omis au profit de la simplicité.
Notez également que ce n'est pas parce que l'implémentation open source largement déployée a une fonctionnalité que les environnements Unix commerciaux le seront. Même si POSIX devait spécifier des tableaux dans une nouvelle version, il faudrait plusieurs années avant que tous ces systèmes soient mis à jour pour les prendre en charge.