Is their a way for a Child process to modify its Parent's environment?
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Jun 26 09:02:26 PDT 2014
On Tue, 24 Jun 2014 21:53:51 -0400, WhatMeWorry <kc_heaser at yahoo.com>
wrote:
> I open a command line window, and run the following 6 line program
>
> void main()
> {
> string envPath = environment["PATH"];
>
> writeln("PATH is: ", envPath);
>
> envPath ~= r";F:\dmd2\windows\bin";
>
> environment["PATH"] = envPath;
>
> envPath = environment["PATH"];
>
> writeln("PATH is: ", envPath);
>
> }
>
> It prints out the following
>
> PATH is: C:\Windows\system32;C:\Windows...
> PATH is: C:\Windows\system32;C:\Windows...F:\dmd2\windows\bin
>
> when the program exits, I'm back at the command line and I do a
>
> echo %PATH%
>
> which just shows C:\Windows\system32;C:\Windows...
>
> Anybody know of a way to make the change stick for the lifetime of the
> command window?
Only the command shell can change it's own environment. When you execute
commands that set an environment variable, those are shell builtins, not
external programs.
You can run a batch file (which is not run in a separate process) which
sets environment variables. This may be the only way to affect the
environment. Basically, have a program run that dictates what to set,
builds a batch file, then run that batch file from the command line. This
could be done in another batch file.
-Steve
More information about the Digitalmars-d-learn
mailing list