$ mySite="superuser"
$ readonly mySite
$ unset mySite
bash: unset: mySite: cannot unset: readonly variable
我们如何删除 mySite,因为它是一个只读变量?
答案1
您无法删除 mySite。readonly 命令的全部目的是使其成为最终的和永久的(直到 shell 进程终止)。如果您需要更改变量,请不要将其标记为只读。
答案2
沃克·黑尔四世的解决方案可以使用较新版本中提供的选项,以更简短的方式表达gdb
:
gdb --batch-silent --pid=$$ --eval-command='call unbind_variable("mySite")'
再次强调,这是黑暗魔法应该远离生产环境。
答案3
看https://stackoverflow.com/a/21294582/642372
这是黑暗魔法。它用于通过调用内部 C 函数来gdb
告诉bash
进程清除变量。
mySite="superuser"
readonly mySite
gdb -n <<EOF >>/dev/null 2>&1
attach $$
call unbind_variable("mySite")
detach
quit
EOF
你应该绝不在生产中使用它。我的 .bashrc 中有它。