The local builtin command¶
Synopsis¶
local [option] name[=value] ...
Description¶
local is identical to declare in every way, and takes all the same options, with two exceptions:
- Usage outside of a function is an error. Both declareandlocalwithin a function have the same effect on variable scope, including the -g option.
- localwith no options prints variable names and values in the same format as- declarewith no options, except the variables are filtered to print only locals that were set in the same scope from which- localwas called. Variables in parent scopes are not printed.
Portability considerations¶
- localis not specified by POSIX. Most bourne-like shells don't have a builtin called- local, but some such as- dashand the busybox shell do.
- The behavior of function scope is not defined by POSIX, however local variables are implemented widely by bourne-like shells, and behavior differs substantially. Even thedashshell has local variables.
- In ksh93, using POSIX-style function definitions, typesetdoesn't setlocalvariables, but rather acts upon variables of the next-outermost scope (e.g. setting attributes). Usingtypesetwithin functions defined using kshfunction name {syntax, variables follow roughly lexical-scoping, except that functions themselves don't have scope, just like Bash. This means that even functions defined within a "function's scope" don't have access to non-local variables except throughnamerefs.