$ mySite="superuser"
$ readonly mySite
$ unset mySite
bash: unset: mySite: cannot unset: readonly variable
How can we delete mySite, as it is a readonly variable?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityYou 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.
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.
'unbind_variable' has unknown return type; cast the call to its declared return type
. The declared return type is int
(github.com). Success after adding (int)
: gdb --batch-silent --pid=$$ --eval-command='call (int) unbind_variable("mySite")'
May 12, 2021 at 19:31
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. 😉