On Mon, Mar 09, 2026 at 08:36:02 +0100, Félix Hauri via Bug reports for the GNU Bourne Again SHell wrote: > Le Sun, Mar 08, 2026 at 06:14:32PM -0400, Greg Wooledge a écrit : > > On Sun, Mar 08, 2026 at 15:54:06 -0600, Stan Marsh wrote: > > > >When a shell script is edited while running, it appears the current > > > >invocation takes the update right away. > > It would be the work of a few minutes to come up with an example. > > A lot longer to come up with a *good* example. > > Running this: > > #!/bin/bash > > echo "This is a test script" > > script="$(sed \$s/last/second-to-last/ <$0)" > echo "$script" >$0 > > echo 'echo This line was added while running' >>$0 > > echo This is the last line. > > could produce something like: > > This is a test script > This is the last line. > ./script.sh: line 11: ast: command not found > This line was added while running
The example I thought of was: ==================================================== #!/bin/bash set -e # Cool Script v1.3.2 by [email protected] echo Cool sleep 60 # rm -rf /something/important # heh heh heh echo Script ==================================================== Imagine this is running, and then version 1.3.3 is released, with the only changes being the version number and the author's email address, which is now [email protected]. The running instance has just read and is now executing the sleep command. That puts the file position at the # character on the commented-out rm command. The new script is installed by overwriting the original. The new version is 2 bytes shorter, so the file position is now 2 bytes further in, which puts it at the "rm". So, after the update, the sleep command eventually finishes, and then the running instance executes the rm command, which either succeeds (bad), or fails (less bad). If it fails, then the set -e kicks in, and the final echo is never executed, so either way you lose. As I said before, it would take longer to come up with a *good* example, and this isn't a very good one. But it's simple enough to understand, and illustrates the "problem".
