# The readonly builtin command ## Synopsis readonly [-p] [-a] [-A] [-f] [NAME[=VALUE] ...] ## Description The `readonly` builtin command is used to mark variables or functions as read-only, which means unchangeable. This implies that it can't be unset anymore. A `readonly` variable may not be redefined in child scopes. A readonly global may not be redefined as a function local variable. Simple command environment assignments may not reference readonly variables. ### Options |Option|Description| |-|-| |`-a`|refer to normal arrays| |`-A`|refer to associative arrays| |`-f`|refer to functions| |`-p`|print all read-only variables or functions, `-a`, `-A` and `-f` can be used to filter. The output is reusable as input| An argument of `--` disables further option processing. ### Return status |Status|Reason| |-|-| |0|no error| |!=0|invalid option| |!=0|invalid combination of options| |!=0|a given `NAME` is invalid| ## Examples ## Portability considerations - in POSIX(r), only the `-p` option is specified ## See also - [declare](../../commands/builtin/declare.md) - [unset](../../commands/builtin/unset.md)