Il est drôle que la plupart OS'es je sais, ne lisez pas la totalité du contenu de tout script en mémoire et l'exécuter à partir du disque. Faire autrement permettrait de faire des changements au script, en cours d'exécution. Je ne comprends pas pourquoi cela est fait, compte tenu du fait:
- scripts sont généralement très petites (et ne prennent pas beaucoup de mémoire de toute façon) à un moment donné
- , et montré dans ce fil, les gens commencer à faire des modifications à un script qui est déjà en cours d'exécution de toute façon
Mais, reconnaissant cela, voici quelque chose à penser: Si vous avez décidé qu'un script ne fonctionne pas OK (parce que vous écrivez/modification/mise au point), faire vous vous souciez du reste de l'exécution de ce script? vous pouvez aller de l'avant en faisant les changements, les sauvegarder, et ignorer toutes les sorties et les actions, effectuées par le cycle en cours. Mais parfois, et cela dépend du script en question, une exécution ultérieure du même script (modifié ou non) peut devenir un problème puisque l'exécution actuelle/précédente exécute une exécution anormale. Il saute typiquement quelques trucs, ou saute subitement sur des parties du script, il ne devrait pas. Et cela peut être un problème. Cela peut laisser les «choses» dans un mauvais état; en particulier si la manipulation/création de fichier est impliquée. Donc, en règle générale: même si le système d'exploitation prend en charge la fonctionnalité ou non, il est préférable de laisser l'exécution en cours se terminer, puis enregistrer le script mis à jour. Vous pouvez le changer déjà, mais ne le sauvegardez pas. Ce n'est pas comme dans les vieux jours de DOS, où vous avez réellement un seul écran devant vous (un écran DOS), donc vous ne pouvez pas dire que vous devez attendre la fin de l'exécution, avant de pouvoir ouvrir un fichier à nouveau.
Cette question peut être une duplicité de [déjà répondu à la question] (http://stackoverflow.com/questions/3398258/edit-shell-script-while-its-running). – LRA
Les scripts shell sont lus en blocs, donc s'il y a une grosse boucle, alors tout le matériel pour la boucle sera lu, mais le matériel au-delà n'aura peut-être pas été traité. J'ai certainement vu des modifications à un script shell alors qu'il était en cours d'exécution causer des problèmes - l'éviter. Mais cela n'arrive pas toujours et dépend du shell, de la plateforme et peut-être du script. Il pourrait également être affecté par la taille du bloc; le shell peut facilement lire le fichier en blocs, en s'arrêtant quand il n'a plus besoin de lire plus pour le moment. –
@Jonathan: l'affirmation que les scripts shell sont lus dans des blocs cadre avec mon expérience et expliquerait pourquoi le script exécutant a ramassé une version incomplète de mes changements. – Kirby