Skip to content

Local Variables

Local Variables and Scope

In Bash scripting, variables declared inside a function are global by default, meaning they can be accessed and modified from outside the function. This can lead to unintended side effects, especially when multiple functions or scripts share variable names. To mitigate this, Bash provides mechanisms to limit variable scope to the function or script where they’re defined.


Declaring Local Variables with local

The local keyword restricts a variable’s scope to the current function. This prevents name collisions and ensures variables are isolated to their intended context.

my_function() {
    local my_var="I'm local"
    echo "$my_var"
}

my_function
echo "$my_var"  # This will fail: my_var is not accessible outside the function

Key behavior: - local variables are not exported to the environment. - Both local and global variables are initialized to empty strings by default.


Avoiding Name Collisions

Global variables can accidentally overwrite or interfere with variables in other functions. Using local avoids this:

global_var="Global value"

my_function() {
    local global_var="Local value"
    echo "Local variable: $global_var"
    echo "Global variable: $global_var"
}

my_function
echo "Global variable after function: $global_var"