readonly 命令用于将变量设为只读,赋值或 unset 会报错;支持变量、函数及数组;只读属性限于当前 shell,不可取消,需通过重启 shell 或重构逻辑应对。

在 Linux Shell 中,使用 readonly 命令可以将变量设为只读,之后任何对该变量的赋值操作都会失败。
用 readonly 声明只读变量
声明方式很简单,直接在变量赋值后或同时加上 readonly:
- name="Alice"; readonly name
- readonly age=25(一步完成定义与设为只读)
一旦设为只读,再执行 name="Bob" 或 unset name 都会报错:bash: name: readonly variable。
查看当前所有只读变量
运行 readonly(不带参数)可列出所有已声明的只读变量及其值;加 -p 参数效果相同,输出格式更规范,适合脚本解析。
只读变量的作用范围
只读属性默认是当前 shell 进程内有效,不会自动传递给子进程。如果希望导出的变量也只读,需先 export 再 readonly,但注意:export 和 readonly 的顺序不影响结果,readonly -f 可用于函数,readonly -a/readonly -A 分别用于数组和关联数组。
取消只读属性?不行,但有替代思路
Shell 不提供取消只读属性的命令。试图用 readonly -n 或其他方式解除均无效。如确需修改,只能重启 shell 或重新设计逻辑——比如用普通变量配合命名约定(如 CONFIG_PATH_RO)提醒自己勿改,或把配置抽到外部文件中按需读取。











