readonly:readonly 命令用于在 shell 中将变量或函数标记为只读,一旦设置,不能被修改或取消。
一、语法
readonly [-aAf] [name[=value] .. or readonly -p
二、选项
readonly VAR # 将变量 VAR 设为只读
readonly VAR=VALUE # 定义并设为只读
readonly -f FUNC # 将函数 FUNC 设为只读
readonly -a ARRAY # 将数组设为只读(Bash)
readonly -A ASSOCIATIVE_ARRAY # 关联数组设为只读(Bash)
readonly -p # 显示所有只读变量
readonly -f -p # 显示所有只读函数
三、示例
- 定义一个变量,设置为只读,重新定义时报错
var="hello"
readonly var
var="world" # 报错:bash: var: readonly variable
- 设置完变量后取消变量报错
readonly newvar="fixed"
echo $newvar # 输出: fixed
unset newvar # 报错:bash: unset: newvar: cannot unset: readonly variable
- 定义函数
myfunc() { echo "Hello"; }
readonly -f myfunc
myfunc() { echo "World"; } # 报错:bash: myfunc: readonly function
四、注意
- 对于某些变量禁止让用户修改的可以写到全局变量或者用户家目录的配置文件中。
- 重启后,readonly 变量或函数 不会保留,除非它们被定义在 系统启动脚本 或 用户的 shell 配置文件(如 .bashrc、.bash_profile)中。
例如:
echo 'readonly myvar="persistent"' >> ~/.bashrc
这样,每次用户登录或打开新的 shell,变量 myvar 都会重新设为只读。
如果只是临时在当前 shell 设为 readonly,重启后就会恢复默认状态,不再是只读的。
- 虽然 readonly 不是高频命令,但在保护关键变量、防止误操作、增强脚本稳定性等方面非常有用。