[Gllug] ADVERT: Shell Scripting book

Steve Parker steve at steve-parker.org
Wed Jul 20 20:59:14 UTC 2011

On 20/07/11 21:50, Alain Williams wrote:
> On Wed, Jul 20, 2011 at 09:40:17PM +0100, Steve Parker wrote:
>> On 20/07/11 21:33, Nix wrote:
>>> On 20 Jul 2011, Steve Parker outgrape:
>>>> All shell variables are environment variables;
>>> Certainly not. All environment variables are shell variables, though.
>> You may not be interactively using the environment, but the two things
>> are the same,
> Try the following:
> 	foo=bar
> 	echo $foo
> 	env|grep foo
> 	export foo
> 	env|grep foo
Here $foo has not been exported to env, but $foo is still a variable in 
your current running shell.
env is not a shell builtin; it does not report on your shell's state, 
but on what your shell exports to called programs.
Granted, we're getting down to terminology here, but from the bash man 
page (with my emphasis added):

       When a simple command other than a builtin or shell function is 
to be executed, it is invoked
        in  a *separate execution environment* that consists of the 
following.  Unless otherwise noted,
        the values are inherited from the shell.
        *     the shell's open files, plus any modifications and 
additions specified by redirections
               to the command
        *      the current working directory
        *     the file creation mode mask
        *      shell variables and functions *marked for export*, along 
with variables exported for the
               command, passed in the environment

The shell's environment (realistically in this context, a shell script's 
environment) contains all of its variables (including an unexported 
$foo). External commands are run in their own environment; not all of 
your environment is exported to commands that you call, but all of your 
variables are part of your environment.

That is all that I was saying; exporting and scope are of course a topic 
in their own right, which are covered in Chapter 7 of the book, 
including the above. I think that we are saying the same thing, but 
getting caught up on terminology,

Gllug mailing list  -  Gllug at gllug.org.uk

More information about the GLLUG mailing list