取消设置只读变量

取消设置只读变量

是否可以readonly在 Korn Shell 中取消设置或更改变量?我使用的是 AIX 5。

答案1

从来没听说过。至少,明显的方法行不通:您不能unset使用只读变量或删除只读属性typeset +r。这适用于我见过的所有 ksh 变体以及 bash,但显然有 ksh 版本,例如在 AIX 4.3 上允许typeset +r(zsh 也允许)。

从技术上讲,您可以从外部执行此操作:使用调试器连接到 ksh 进程,并翻转内存中 ksh 进程存储变量只读信息的位。因此只读变量并不是绝对的安全功能。

如果您需要在启动命令之前将变量设置为不同的值,请通过以下方式完成env

readonly foo='some value'
env foo='other value' mycommand

或者,使变量在受限范围内(在函数中)为只读。

相关内容