• [^] # Ça dépend de l’éditeur

    Posté par . En réponse au message impossible de modifier un exécutable lorsqu'il est en exécution. Évalué à 4.

    Quand on sauvegarde avec un éditeur, il peut soit :

    1. réécrire le fichier en place, mais s’il y a un problème au moment de l’écriture, le fichier peut être incohérent ;
    2. écrire dans un nouveau fichier, puis une fois que celui-ci est complètement écrit sans erreur, remplacer l’ancien par lui.

    Je pense que la grande majorité des éditeurs récents font le deuxième choix.

    Si un éditeur fait le premier choix, le fichier sera changé en cours d’exécution par un interpréteur qui le lit ligne par ligne.
    En éditant le fichier avec vi, j’obtiens le même comportement que cosmoff. Ce qui m’étonne, ce n’est pas tant que bash ligne le fichier ligne par ligne (il conserve des caractéristiques du Bourne shell, qui date d’une autre époque ; enfin c’est quand même déjà étonnant), que le fait qu’il ne verrouille même pas le fichier avec interdiction d’écriture pendant qu’il l’exécute !

    Si un éditeur fait le deuxième choix, bash continue de lire le fchier d’origine (même s’il est supprimé du système de fichiers et plus visible dans le répertoire, il est maintenu tant qu’un processus le garde ouvert).
    Si j’édite le fichier avec vim, l’exécution n’est pas modifiée.

    Peut-être certaines distributions ont-elles un lien sur vim à la place de vi, et dans ce cas toujours le comportement comme si le fichier n’avait pas été modifié en cours d’exécution.

    Cela dit, je n’avais jamais remarqué cette caractéristique de bash, probablement parce que j’évite d’utiliser vi (celui d’origine) et que je n’utilise probablement pas régulièrement autre chose qui ait le même comportement.

    « Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone