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....