    iridium% env -i N=x NN=n /bin/bash -c printenv
    NN=n
    N=x
    PWD=/tmp
    SHLVL=1
    _=/bin/printenv

    iridium% env -i N=x NN=n /bin/ash -c printenv
    NN=n
    N=x

    iridium% env -i N=x NN=n SHELL=/bin/bash /bin/gdb -n --args /bin/printenv
    GNU gdb 5.3
    Copyright 2002 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "i686-pc-linux-gnu"...
    (no debugging symbols found)...
    (gdb) run
    Starting program: /usr/bin/printenv 
    NN=n
    SHELL=/bin/bash
    N=x
    PWD=/tmp
    SHLVL=0

    Program exited normally.
    (gdb) 



    iridium% env -i N=x NN=n SHELL=/bin/ash /bin/gdb -n --args /bin/printenv
    GNU gdb 5.3
    Copyright 2002 Free Software Foundation, Inc.
    GDB is free software, covered by the GNU General Public License, and you are
    welcome to change it and/or distribute copies of it under certain conditions.
    Type "show copying" to see the conditions.
    There is absolutely no warranty for GDB.  Type "show warranty" for details.
    This GDB was configured as "i686-pc-linux-gnu"...
    (no debugging symbols found)...
    (gdb) run
    Starting program: /usr/bin/printenv 
    NN=n
    N=x
    SHELL=/bin/ash

    Program exited normally.
    (gdb) 


subtle differences in running a program under "make", "bash", or "gdb" :

gdb:

- puts the absolute path to the program into argv[0]
- changes the order of the environment variables in a seemingly random way
	example: 
		env -i N=x NN=n /bin/printenv
		env -i N=x NN=n gdb /bin/printenv
- sets environment variables "PWD" and "SHLVL", putting PWD at the beginning and
	SHLVL at the end or after the 12th one
- changes one byte of the code of ld-2.2.5.so, at an offset of 42625 
	(a breakpoint?)
- runs the program this way, it's the shell that sets and shuffles the environment variables!
	'$SHELL' '-c' 'exec PROGRAM ARG ...' 
	Fix that by editing inferior.h to change
		#define STARTUP_WITH_SHELL 1
	to
		#define STARTUP_WITH_SHELL 0
	and to decrement 
		#define START_INFERIOR_TRAPS_EXPECTED	2
	by 1.  But notice that variable is also defined by ./configure so change it in
	configure.in, too.

bash:

- puts the 0-th argument on the command line into argv[0]
- sets the environment variable "PS1"
- may have set the environment variable "OLDPWD"
- sets the environment variable "_" to the same as argv[0]

make:

- puts the 0-th argument on the command line into argv[0]
