在PowerShell中重新加载path
如果我有一个运行Powershell ISE的实例,并且我安装了一些修改PATH的东西,或者我在Powershell以外的任何地方修改它,那么我需要重新启动Powershell才能看到更新的PATHvariables。
有没有办法重新加载从Powershell内的path,而不重新启动它?
只是为了让Rob的评论变得轻松:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
尝试获取机器path并将其分配给会话的path。
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
如果您的path包含在会话开始时未定义的环境variables,则还需要展开这些variables
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
对我来说,在安装定义NVM_HOME%并将NVM_HOME%添加到path中的NVM之后,这很有用
为了达到它的逻辑结论,你可以使用这个recursion函数来扩展
function Expand-EnvironmentVariablesRecursively($unexpanded) { $previous = '' $expanded = $unexpanded while($previous -ne $expanded) { $previous = $expanded $expanded = [System.Environment]::ExpandEnvironmentVariables($previous) } return $expanded }
然后使用
$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
我已经打开了一个问题 ,从巧克力添加到refreshenv
这个解决scheme