mirror of
https://github.com/rawiriblundell/wiki.bash-hackers.org
synced 2024-11-01 16:43:08 +01:00
1.6 KiB
1.6 KiB
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
declare
andlocal
within a function have the same effect on variable scope, including the -g option. local
with no options prints variable names and values in the same format asdeclare
with no options, except the variables are filtered to print only locals that were set in the same scope from whichlocal
was called. Variables in parent scopes are not printed.
Portability considerations
local
is not specified by POSIX. Most bourne-like shells don't have a builtin calledlocal
, but some such asdash
and 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 the
dash
shell has local variables.
- In ksh93, using POSIX-style function definitions,
typeset
doesn't setlocal
variables, but rather acts upon variables of the next-outermost scope (e.g. setting attributes). Usingtypeset
within 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
.