* Regular Bash variables are scoped to the shell that contains them, including any subshells in that shell.
** They are not visible to any child processes (that is, to external programs).
** If they are created inside a subshell, they are not visible to the parent shell.
** If they are modified inside a subshell, those modifications are not visible to the parent shell.
** This is also true of functions, which in many ways are similar to regular Bash variables.
* Function-calls are not inherently run in subshells.
** A variable modification within a function ''is'' generally visible to the code that calls the function.
* Bash variables that are exported into the environment are scoped to the shell that contains them, including any subshells ''or child processes'' in that shell.
** The <tt>export</tt> built-in command can be used to export a variable into the environment. (There are other ways as well, but this is the most common way.)