我正在使用 GitHub for Windows 应用程序。最近我注意到从 GitHub 应用程序中启动 PowerShell 控制台需要很长时间。经过一番挖掘,我发现慢命令正在设置一个环境变量。更具体地说,GitUtils.ps1 中的这些行(GitHub 使用的 PoshGit 的一部分):
function setenv($key, $value) {
[void][Environment]::SetEnvironmentVariable($key, $value, [EnvironmentVariableTarget]::Process)
[void][Environment]::SetEnvironmentVariable($key, $value, [EnvironmentVariableTarget]::User)
}
Run Code Online (Sandbox Code Playgroud)
设置 Process-wide 变量是即时的,但 User 变量需要很长时间。使用以下脚本:
$sw = [Diagnostics.Stopwatch]::StartNew()
[Environment]::SetEnvironmentVariable("Horses", "are neat", [EnvironmentVariableTarget]::User)
$sw.Stop()
$sw.Elapsed
Run Code Online (Sandbox Code Playgroud)
我可以看到这个操作需要超过 80 秒。使用默认的高级设置窗口设置用户环境变量很快。使用快速环境编辑器,设置一个变量通常很快,但有时需要 5-10 秒,但从来没有这么长的时间。
有人对可能导致这种情况的原因有任何建议吗?