Bash Parameters and Variables: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 17: Line 17:


Declaring a global variable to be exported causes the variable and its value ''to be copied'' in the environment of a invoked sub-shell. The sub-shell gets a copy of the variable, not a reference. Modifying the variable from the sub-shell does not reflect into the value of the global variable maintained by the invoking shell.
Declaring a global variable to be exported causes the variable and its value ''to be copied'' in the environment of a invoked sub-shell. The sub-shell gets a copy of the variable, not a reference. Modifying the variable from the sub-shell does not reflect into the value of the global variable maintained by the invoking shell.
==Variables exported by Sub-Shells==
If a sub-shell invoked from another shell exports a global variable, once the sub-shell exits, the exported variables are discarded, and the invoking shell does not sees them.


=Local Variable=
=Local Variable=

Revision as of 01:01, 27 May 2016

Internal

Global Variable

Global variables are only maintained within the context of the current shell. Once the shell exits, the global variables are discarded.

The value of a global variable is not available to sub-shells, unless the variable is exported.

export

export VAR=VALUE

Declaring a global variable to be exported causes the variable and its value to be copied in the environment of a invoked sub-shell. The sub-shell gets a copy of the variable, not a reference. Modifying the variable from the sub-shell does not reflect into the value of the global variable maintained by the invoking shell.

Variables exported by Sub-Shells

If a sub-shell invoked from another shell exports a global variable, once the sub-shell exits, the exported variables are discarded, and the invoking shell does not sees them.

Local Variable

The local keyword designates a local variable. Local variables can only be declared inside a function.

Scope

All variables declared in a shell are visible inside the functions executed within that shell and inside functions invoked from function invoked from the shell, recursively.