有没有办法调用可能影响当前终端环境变量的外部程序?

时间:2014-09-26 09:21:49

标签: windows powershell

我编写了一个在windows上的终端下运行的程序,它需要指定PATH,以便可以在没有完全绝对路径的情况下调用它。但是,我已指定“PATH”并将值保存到“用户”环境变量中。但是,除非我重新启动终端,否则这不会生效。如果我像这样手动设置PATH:

PATH=%PATH%;D:\folder

终端可以在D:\文件夹下找到可执行程序,如果我在外部程序中调用该集合,它似乎不会影响当前终端。(也许外部程序是当前终端的子进程, PATH仅存在于当前会话中)。 我已经尝试过“设置PATH = xxx”和“PATH = xxx”,但都无效。    所以问题是如何通过外部程序重置当前终端会话的环境?我不想在终端中手动设置PATH,这对用户来说会很乏味。     有办法吗?    顺便说一句,我注意到这个Setting Windows PowerShell path variable,在我调用“setx PATH D:\ folder -m”之后,它显示操作成功,但我输出$ PATH并且该值不包含D:\文件夹

2 个答案:

答案 0 :(得分:0)

请看这个链接:http://technet.microsoft.com/de-ch/magazine/2008.10.windowspowershell.aspx
也许您可以设置此配置文件并在那里执行PATH=%PATH%;D:\folder。每次启动powershell.exe时都会加载配置文件。

答案 1 :(得分:0)

要回答您提出的确切问题,不,调用程序无法改变调用者环境。如果有的话,我想象会有各种疯狂的方式将其变成安全噩梦。

调用程序可以决定明确要从被调用进程中获取值。

使用此脚本执行此操作的方法略显晦涩(但有效):http://poshcode.org/2176

或者,@安斯加与另一种可能性有关。