Shell functions are not self-contained - they can access and modify variables from the calling shell scope. Variables changed inside a function affect the parent scope unless declared local. Functions can also be called from anywhere in the script or shell session after definition.