我安装了GitHub和Git,并希望将Git添加到PowerShell路径。我将其添加到系统路径中,它可在cmd.exe中运行,并在我打印$ env:path时显示正确的路径,但PowerShell仍无法识别git。
我试图重新启动,以为它可能滞后了,但那并不能解决问题。
如果我导航到git所在的路径(实际上是从$ env:path的输出中复制它,以确保它不是拼写错误),然后运行./git即可正常工作。
PS C:\> $env:path
C:\Program Files\Microsoft MPI\Bin\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft MPI\Bin\;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Users\JHdJ\AppData\Local\Programs\Python\Launcher\;C:\Users\JHdJ\AppData\Local\Microsoft\WindowsApps;C:\Users\JHdJ\AppData\Local\GitHubDesktop\bin;C:\Users\JHdJ\AppData\Local\GitHubDesktop\app-1.6.5\resources\app\git\cmd"
#"# (dummy comment to fix syntax highlighting)
PS C:\> git
git : The term 'git' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ git
+ ~~~
+ CategoryInfo : ObjectNotFound: (git:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\Users\JHdJ\AppData\Local\GitHubDesktop\app-1.6.5\resources\app\git\cmd> ./git
如前所述,后者工作正常。
此外,在cmd.exe中,仅运行git
即可正常工作。
我希望PowerShell将git
识别为命令,因为$env:Path
指向git.exe
的目录。
答案 0 :(得分:3)
您的PATH
环境变量($env:PATH
)配置错误:
它包含一个无关的"
,作为其值的一部分:
# Your $env:Path value - note the unexpected, unpaired " at the end.
...;C:\Users\JHdJ\AppData\Local\GitHubDesktop\app-1.6.5\resources\app\git\cmd"
cmd.exe
会忽略无关的"
,但是PowerShell不会,因此您的C:\Users\JHdJ\AppData\Local\GitHubDesktop\app-1.6.5\resources\app\git\cmd
目录实际上是 not 的一部分从PowerShell的角度来看$env:PATH
的内容,它可以解释您的症状。
解决方案是固定$env:PATH
值:
临时,仅用于当前会话:
$env:Path = $env:Path -replace '"' # remove embedded " chars.
永久,用于将来的会议:
$currUserPath = [Environment]::GetEnvironmentVariable('Path', 'User')
[Environment]::SetEnvironmentVariable('Path', $currUserPath -replace '"', 'User')
$env:PATH
是来自两个不同注册表位置的 composite 值:一个机器范围内的和一个用户特定的一,则应分别 更新它们。在您的情况下,考虑到目录。问题是特定于用户的,这是需要更新的特定于用户的定义,如上所示。请注意,更新持久性值并不会自动刷新 current 会话中的值,因此要使该值生效,您必须在 ad hoc 命令中运行好吧。