Stop local variables from bleeding into your shell session
Shell Scripting / Bash Tricks
Stop local variables from bleeding into your shell session
🧩 The Challenge
Everyone has accidentally overwritten a global PATH or IFS variable because they forgot to make their script variable local. It’s a total headache when your entire terminal environment breaks just because a sloppy script leaked its internal state.
💡 The Fix
Just prefix your variable assignments with local inside your functions. It keeps everything scoped to the function and prevents you from mangling your parent shell environment.
my_function() {
local temp_dir=/tmp/work
echo "Doing work in $temp_dir"
}
⚙️ Why It Works
Bash functions share the same scope as the parent shell unless you explicitly tag a variable as local. By using that keyword, you tell the shell to dump the variable as soon as the function finishes, keeping your global session clean.
🚀 Pro-Tip: Always use local in loops too, otherwise your counter variable might mess with other functions running in the same process.
Linux Tips & Tricks | © ngelinux.com | 8/17/2026
