为啥 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