digitalmars.D.learn - Is their a way for a Child process to modify its Parent's environment?
- WhatMeWorry (19/19) Jun 24 2014 I open a command line window, and run the following 6 line program
- Jacob Carlborg (7/25) Jun 25 2014 That's not possible. There is a workaround, DVM does something similar.
- Steven Schveighoffer (11/29) Jun 26 2014 Only the command shell can change it's own environment. When you execute...
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?
Jun 24 2014
On 2014-06-25 03:53, WhatMeWorry 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?That's not possible. There is a workaround, DVM does something similar. Although, I don't remember how the code works for Windows but you can have a look at the code [1], or perhaps Nick can explain it. [1] https://github.com/jacob-carlborg/dvm/blob/master/dvm/commands/Use.d#L34 -- /Jacob Carlborg
Jun 25 2014
On Tue, 24 Jun 2014 21:53:51 -0400, WhatMeWorry <kc_heaser 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
Jun 26 2014