On Windows, PSModulePath is always set by the system even when the
active shell is Git Bash, WSL, or MSYS2. detectShellType() returned
'powershell' in these cases, causing the non-interactive-env hook to
prepend PowerShell $env: syntax which Git Bash cannot parse.
Adds checks for TERM, BASH_VERSION, MSYSTEM, and WSL_DISTRO_NAME
before the PSModulePath check to correctly identify Unix shells.
Fixes#3366
On Windows, PSModulePath is always set by the system even when the
active shell is Git Bash (via SHELL env var). This caused the
non-interactive-env hook to generate PowerShell syntax ($env:VAR=val)
for bash shells, resulting in 15+ errors per command.
The fix prioritizes SHELL over PSModulePath since an explicit SHELL
variable indicates the user's chosen shell, while PSModulePath is just
a system-wide module path that doesn't indicate the active shell.
Fixes: #3338