Environment inheritance under Windows NT 4, Attempt 2
James C. Ahlstrom
jim at interet.com
Fri Jun 25 10:57:50 EDT 1999
"Milton L. Hankins" wrote:
>
> Since I've not yet gotten a response to my first post, here's an
> elaboration.
>
> Windows NT Workstation 4.00.1381, SP5.
> C:\>echo %WINDIR%
> C:\WINNT
>
> C:\>python -c "import os; print os.environ['windir']"
> C:\WINNT
>
> C:\>set WINDIR=foo
>
> C:\>echo %WINDIR%
> foo
>
> C:\>python -c "import os; print os.environ['windir']"
> C:\WINNT
>
> -----------------------------------------------------
I don't get this behavior on NT 4.00.1381. This was copied from
cmd.exe:
N:\python\Python-1.5.2\PCbuild>ver
Windows NT Version 4.0
N:\python\Python-1.5.2\PCbuild>./python -c "import os; print
os.environ['WINDIR']"
C:\WINNT35
N:\python\Python-1.5.2\PCbuild>set WINDIR=foo
N:\python\Python-1.5.2\PCbuild>echo %WINDIR%
foo
N:\python\Python-1.5.2\PCbuild>./python -c "import os; print
os.environ['WINDIR']"
foo
N:\python\Python-1.5.2\PCbuild>
I think I am at service pack 4. I am using Python 1.5.2. What is your
Python version (not that it should matter). Very peculiar.
The code seems to be getting the environment from char **environ. The
VC 6.0 docs say to use _environ, and I don't see a reference to
_environ.
The docs also say getenv() uses _environ.
Although I can't duplicate the behavior you describe, it seems to
me Python should be using _environ instead of environ. Does anyone
know what environ is on NT? I see "#define environ _environ" in
stdlib.h, but it is inside a bunch of #ifdef's.
Jim Ahlstrom
More information about the Python-list
mailing list