Nếu đường dẫn của bạn chứa các biến môi trường không được xác định khi bắt đầu phiên, bạn cũng sẽ muốn mở rộng các biến đó:
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
Đối với tôi, điều này rất hữu ích sau khi cài đặt NVM, định nghĩa và thêm% NVM_HOME% vào đường dẫn.
Để đưa ra kết luận hợp lý này, bạn có thể sử dụng hàm đệ quy này để mở rộng thay thế:
function Expand-EnvironmentVariablesRecursively($unexpanded) {
$previous = ''
$expanded = $unexpanded
while($previous -ne $expanded) {
$previous = $expanded
$expanded = [System.Environment]::ExpandEnvironmentVariables($previous)
}
return $expanded
}
Và sau đó sử dụng:
$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
Tôi đã mở một vấn đề để thêm giải pháp này vào refreshenv
từ Chocolatey.