Setting environment variables.
Thomas Wouters
thomas at xs4all.nl
Fri Aug 20 11:53:47 EDT 1999
On Fri, Aug 20, 1999 at 01:21:23PM +0200, Per Kistler wrote:
> Oliver White wrote:
> eg, after
> > running my python program as a child process, will the changes to the
> > environment variable affect it's parent (the *term)? (suspecting no) Is
> > there annother way to set the parent's?
> I'm wondering, whether one could exec to a program which sets
> ones env and then exec back to a shell, which would then have
> the desired env. One would no more be in the original shell,
> but the new one would have the desired env.
> Maybe some guru could elaborate on that....
It gets better... C's exec*() family allow you to specify the environment.
And so does python :)
(from the Python Library Reference 6.1.5, os module, Process Management)
execle (path, arg0, arg1, ..., env)
This is equivalent to "execve(path, (arg0, arg1, ...), env)".
Availability: Unix, Windows.
[..]
execve (path, args, env)
Execute the executable path with argument list args, and environment
env, replacing the current process (i.e., the Python interpreter). The
argument list may be a tuple or list of strings. The environment must
be a dictionary mapping strings to strings. Availability: Unix,
Windows
>>> x = UserDict.UserDict(os.environ)
>>> x["spam"] = "eggs"
Just so you know i aint cheating this time ;-)
>>> os.environ["spam"]
Traceback (innermost last):
File "<stdin>", line 1, in ?
File "/usr/lib/python1.5/UserDict.py", line 14, in __getitem__
def __getitem__(self, key): return self.data[key]
KeyError: spam
>>> os.execle("/bin/tcsh", "-", x)
centurion:~/python > echo $spam
eggs
Yes, you could set os.environ before an os.exec*(), but passing a modified
env is nicer.
--
Thomas Wouters <thomas at xs4all.net>
Hi! I'm a .signature virus! copy me into your .signature file to help me spread!
More information about the Python-list
mailing list