$ mySite="superuser" $ readonly mySite $ unset mySite bash: unset: mySite: cannot unset: readonly variable
How can we delete mySite, as it is a readonly variable?
You can't delete mySite. The whole point of the readonly command is to make it final and permanent (until the shell process terminates). If you need to change a variable, don't mark it readonly.
This is dark magic. It uses
gdb to tell the
bash process to clear the variable by calling an internal C function.
mySite="superuser" readonly mySite gdb -n <<EOF >>/dev/null 2>&1 attach $$ call unbind_variable("mySite") detach quit EOF
You should never have this in production. I have it in my .bashrc. 😉
Walker Hale IV's solution can be expressed in a much shorter fashion using options available in more recent versions of
gdb --batch-silent --pid=$$ --eval-command='call unbind_variable("mySite")'
Again, this is dark magic that should be kept well away from production environments.