On 11/15/10 04:24, Pádraig Brady wrote:
> I've done it before, but I don't know how general the method is:
> http://www.pixelbeat.org/scripts/self_modify.sh

One problem I forsee is that, if the script is modified in place,
the modification can occur while the shell is reading the script.
So one must first create the desired script as a separate file,
and then atomically rename it over the original, so that the shell
can continue to access the original script as needed via its
already-open file descriptor.  Even here, though,
I worry that POSIX does not say that a shell must open a script and
then access it only via a file descriptor: as far as I
can see, it's valid (though admittedly weird) for a shell to reopen
its script as needed, in which case the atomic-rename approach is
not reliable either.  These sorts of race conditions are unlikely to be
a problem in practice, but failures will be weird and hard to
diagnose.

Also, suppose 'bootstrap' is a symlink to some other file,
for whatever reason: do we replace the symlink with a regular file,
or update the pointed-at file?

None of these objections are fatal, but still....

Reply via email to