如何在 bash 中删除只读变量?

如何在 bash 中删除只读变量?
$ 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 中有它。

相关内容