Problème de Bash => les tableaux en readonly?

hi, pour les spécialistes.

Je suis tombé involontairement sur un ecceuil bizarre.

Quand on fait un declare -a tab, on crée un tableau “tab”. Avec l’option -r, le tableau devient readonly. Dans ce cas, il ne peut plus être supprimé.

Mais… bon sang, ce n’est pas logique ça. Il n’y a VRAIMENT plus moyen de le supprimer ? Imaginez que l’on crée des tableaux dont on a plus besoin? On en fait quoi, après ? Si on ne peut pas les supprimer, ils vont s’accumuler, non ?

Il faut relativiser :
si tu met ton tableau read only dans un script qui n’est pas sensé tourner indéfiniment,
ce n’est pas trop grave. La mémoire est récupérée à l’arrêt du script.

Maintenant, je suis d’accord avec toi que des ressources qu’on ne peut pas libérer
peuvent poser problème mais
1- rien ne nous oblige à passer ces tableaux en read only
2- si on passe le tableau en read only, c’est justement pour qu’il ne soit pas modifié et qu’il reste là inchangé.
(comme les variables d’environnement exportées sont hérités par les processus
qui sont lancés par le bash, on pourrait croire que cela pourrait forcer une application à ne pas modifier
son environnement mais je pense que ça ne marche pas car une application doit sûrement pouvoir réécrire son
environnement comme elle l’entend)

Donc pour moi le fait qu’on ne puisse pas libérer un tableau read only n’est pas un problème, c’est même un comportement plutôt sain.

ok là, tu vois j’ai créer un tableau, et ne sachant pas ce que je faisais (I am fool…), je l’ai modifié en readonly, histoire de voir. Il ne m’est pas venu à l’idée que cela pourrait autre aussi “indélébile”.

Donc mon tableau va rester là jusqu’à la fin de temps, la fin de la machine ou la réinstallation de l’OS? Note qu’en effet, ce n’est pas grave. lol. Je trouve ça totalement bizarre, simplement.

Ton tableau à la durée de vie des processus dans lesquels il apparait dans l’environnement.
Et vu qu’à mon avis, ton script n’a pas été lancé dans le cadre du processus init,
tu n’as qu’à relancer le bash où tu as fait la modif’, ainsi que les processus qu’il a lancé.

hi,

c’est le concept de la programmation séquentielle, à un instant “t” dans ton programme, il se peut que tu ai besoins de créer un tableau non modifiable, ceci dit il ne faut pas que tu restes bloqué sur le mode read only, c’est au programmeur de gérer son programme !

Ah oui, effectivement. Je viens de faire un declare -a, histoire de voir et le tableau a disparu tout seul, comme un grand.
:laughing:

Eh bien merci pour l’explication. :slightly_smiling: je vais pouvoir mieux commprendre comment cela fonctionne, ainsi :slightly_smiling:.