取消设置只读变量

cha*_*987 3 ksh aix readonly

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

Gil*_*il' 5

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

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

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

readonly foo='some value'
env foo='other value' mycommand
Run Code Online (Sandbox Code Playgroud)

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