5
$ mySite="superuser"
$ readonly mySite
$ unset mySite
bash: unset: mySite: cannot unset: readonly variable

How can we delete mySite, as it is a readonly variable?

3

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.

1

See https://stackoverflow.com/a/21294582/642372

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

1

Walker Hale IV's solution can be expressed in a much shorter fashion using options available in more recent versions of gdb:

gdb --batch-silent --pid=$$ --eval-command='call unbind_variable("mySite")'

Again, this is dark magic that should be kept well away from production environments.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.