Por que a diferença entre a variável automática $HOME do PowerShell e a variável de ambiente $Env:HOME?

Por que a diferença entre a variável automática $HOME do PowerShell e a variável de ambiente $Env:HOME?

Nossa organização mapeia pastas iniciais para um compartilhamento de rede via Active Directory para cada usuário. Isso causa problemas com o Git porque o Git espera encontrar o arquivo de configuração global do usuário na pasta pessoal do usuário, que para mim é uma unidade mapeada devido a essa configuração. git config --global --listlança fatal: unable to read config file 'H://.gitconfig': No such file or directory.

Durante a solução de problemas, descobri que a variável automática $HOMEno PowerShell está definida como, C:\Users\usernamemas $Env:HOMEestá definida como a unidade mapeada.

Por que a variável automática do PowerShell é diferente? Presumo que o Active Directory esteja definindo a $Env:HOMEvariável para a unidade mapeada; isso está correto? Se sim, não deveria $HOMEusar o mesmo caminho?

Responder1

TLDR; $HOMEé preferido para compatibilidade entre plataformas

De acordo com a postagem do SOobtendo diretório inicial:

A maneira mais robusta de se referir ao diretório inicial do usuário atual é usarvariável automática $HOME.

Se você tentou usar ovariável de ambiente $env:HOME, diferenças de plataforma surgiriam no Windows versus Unix

informação relacionada