为啥 Powershell 环境 PATH 与系统环境 PATH 不同?

Posted

技术标签:

【中文标题】为啥 Powershell 环境 PATH 与系统环境 PATH 不同?【英文标题】:Why is the Powershell Environment PATH different to the System Environment PATH?为什么 Powershell 环境 PATH 与系统环境 PATH 不同? 【发布时间】:2010-10-07 11:46:21 【问题描述】:

我遇到了这种奇怪的情况:

我的用户和系统的 PATH 变量与 powershell 中的 PATH 不同。

当我这样做时:

PS C:\$env:path
C:\Windows\System32\WindowsPowerShell\v1.0\;c:\oldpath

但是这是不正确的,它看起来像是卡在我系统的某个旧 PATH 变量上,所以我在它上面所做的所有 udpates 都没有改变这个变量(每次更改后我都会重新启动以进行测试) .

为什么会这样?我必须为 powershell 设置一个 PATH 变量吗?

【问题讨论】:

你是如何改变路径的?仅使用 $env:Path = foo 更改它不会在会话中持续存在。 我像往常一样从计算机属性更改 PATH,而不是从控制台。 所以你设置了路径然后重新启动你的powershell会话,它不是你改变它的? 不,我每次测试后都重新启动它 【参考方案1】:

更改可能会“延迟”,因此请尝试以下一种或多种解决方案:

注销然后重新打开; 任务管理器 > 重新启动“Windows 资源管理器” (explorer.exe) 重新启动您的启动器应用(launchy、SlickRun 等) 重启

说明: Powershell 将继承启动它的进程的环境(这取决于您如何启动它)。这通常是交互式 shell (explorer.exe)。当您从计算机属性修改环境时,您会修改 explorer.exe 的环境,因此如果您从 explorer.exe 启动 powershell(例如从开始菜单),您应该会看到新环境。

但是,如果您从其他东西(比如您已经打开的 cmd.exe shell)启动它,那么您不会因为该进程是在旧环境下启动的。

换句话说:小心你如何启动事物。

【讨论】:

在我的情况下,即使在重新启动之间,VS Code 中的 Powershell 窗口的状态也会保留。当我最终在 VS Code 中主动终止 Powershell 窗口并重新打开它时,它得到了新的更新系统路径变量。 任务管理器>重启“Windows资源管理器”解决了我的问题。我不敢相信我必须这样做。【参考方案2】:

就我而言,我安装了一个应用程序,该应用程序通过创建一个将覆盖$env:PATH 并在每次启动 powershell 时破坏现有配置的 powershell 配置文件错误地将自身添加到 PATH 中。

检查您是否在 USER\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 有个人资料,以及它是否在做任何可疑的事情,例如设置 $env:PATH

【讨论】:

以上是关于为啥 Powershell 环境 PATH 与系统环境 PATH 不同?的主要内容,如果未能解决你的问题,请参考以下文章

Powershell 无法识别Path Powershell 如何更新Path

通过 Powershell 将 JAVA_HOME 添加到系统变量 Path

查看环境变量是否配置与详情

为啥我的电脑的环境变量的系统变量里没有path呢??

如何在PowerShell中更改环境变量并启动应用程序

为啥我的Windows powershell读取结果有一堆90m