125

当我使用 Git Bash(在 Windows 上)时,如果不指定其完整路径,我将无法运行任何可执行文件,尽管它位于我的 PATH 变量中的文件夹中。看起来 bash 无法识别它。为什么?我可以修复它吗?

4

21 回答 21

77

知道了。作为 Windows 用户,我习惯于键入不带扩展名的可执行文件名。就我而言,我想执行一个名为cup.bat. 在 Windows shell 中,键入cup就足够了。Bash 不是这样工作的,它需要全名。打字cup.bat解决了这个问题。(虽然我无法运行该文件,因为显然 bash 无法理解它的内容)

切换到 posh-git 的另一个原因..

感谢@Tom 为我指明了正确的方向。

于 2012-05-26T06:13:25.307 回答
56

也许 bash 看不到您的 Windows 路径。键入env|grep PATHbash 以确认看到的路径。

于 2012-05-21T17:51:32.687 回答
39

Following @Daniel's comment and thanks to @Tom's answer, I found out that Git bash was indeed using the PATH but not the latest paths I recently installed. To work around this problem, I added a file in my home (windows) directory named:

.bashrc

and the content as follow:

PATH=$PATH:/c/Go/bin

because I was installing Go and this path contained the executable go.exe Now Git bash was able to recognize the command:

go

Perhaps just a system reboot would have been enough in my case, but I'm happy that this solution work in any case.

于 2015-01-31T18:31:16.877 回答
10

在安装 Git 时,您可以选择如下所示的选项,它会帮助您自动设置路径。

Git 安装向导

它为我解决了:)

于 2013-12-06T14:41:34.040 回答
9

在 C:\Users\USERNAME 中创建一个名为 config.bashrc 的文件,其中包含:

PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space

现在将命令行上的文件移动到正确的位置:

mv config.bashrc .bashrc
于 2016-11-04T07:15:23.327 回答
7

将新值添加到 PATH 后重新启动计算机。

于 2017-04-25T15:38:47.563 回答
4

老问题,但它可以帮助别人。

我已经更改了我的 PATH 用户范围,之后我刚刚注销并再次登录。

这就对了!git bash正确加载了新的 PATH 值。

于 2018-04-25T13:39:42.303 回答
3

如果您git-bashPATH礼物但不是最新的,并且您不想重新启动而是重新生成您PATH的 s,您可以尝试以下操作:

  • 关闭所有cmd.exepowershell.exe和 ,git-bash.exe然后从“开始”菜单或桌面上下文重新打开一个 cmd.exe 窗口。
  • 如果您更改了 system-wide PATH,您可能还需要打开一个特权 cmd 窗口。
  • 从 Windows 资源管理器上下文菜单中打开 Git bash 并查看PATHenv 是否已更新。请注意,IntelliJ IDEA 中的终端可能是登录 shell 或其他某种魔法,因此PATH在您重新启动 IDEA 之前它可能不会改变
  • 如果这不起作用,您可能还需要关闭所有Windows Explorer进程并重试上述步骤。

注意:这不适用于所有 Windows 版本,并且cmd.exe在“开始”菜单或桌面上下文菜单以外的任何地方打开可能无法正常工作,在我的 4 台计算机上进行了测试,其中 3 台可以正常工作。我不知道为什么会这样,但是由于PATH环境变量是在我登录和注销时自动生成的,所以我不会用变量连接来搞乱那个变量。

于 2020-04-14T02:04:08.123 回答
2

我知道这是一个老问题,但有两种类型的环境变量。一个由用户拥有,一个在系统范围内。根据您如何打开 git bash(使用用户权限或管理员权限),使用的环境变量 PATH 可以来自您的用户变量或系统变量。见下文: 在此处输入图像描述

如上一个答案所述,使用命令检查env|grep PATH您正在使用哪个并相应地更新您的变量。顺便说一句,无需重新启动系统。只需关闭并重新打开 git bash

于 2019-10-15T10:57:35.240 回答
2

我可以确认重启系统会确保windows环境变量中设置的PATH被git拾取,没有其他自动方式。

于 2017-10-26T13:14:27.150 回答
1

在 Windows 10 上,只需卸载 git 并重新安装即可。它会自动为您设置环境变量。我错误地删除了环境变量,我无法在我的 IDE 中使用 git。重新安装 git 解决了这个问题。

于 2019-06-04T15:11:55.563 回答
1

这里的根本原因似乎是 Git Bash 无法始终正确解析变量 %USERPROFILE% 。它不是相对于 C:\Users\\ 而是获得值 C:\Windows\System 32\systemprofile\ 将其更改为完全限定的地址后,它可以工作,即使我之后将其重新设置,Git Bash 仍然由于某种原因具有正确的 PATH 。

于 2016-12-14T10:01:15.163 回答
1

我在Win10中尝试使用mingw编译xgboost lib时遇到了这个问题。最后我找到了解决方案。

在您的主目录(通常是 C:\Users\username)中创建一个名为 .bashrc 的文件。然后添加它的路径。如果您的路径包含空白,请记住使用引号,并记住使用 /c/ 而不是 C:/

例如:

PATH=$PATH:"/c/Program Files/mingw-w64/x86_64-7.2.0-posix-seh-rt_v5-rev1/mingw64/bin"

于 2018-02-03T11:05:57.483 回答
0

对我来说最方便的是:1)在C:驱动器的根目录中创建目录“bin” 2)添加“C:/bin;” 到“我的电脑 -> 属性 -> 环境变量”中的 PATH

于 2014-09-15T22:58:23.977 回答
0

就我而言,它是在安装 heroku cli 和 git bash 时发生的,这就是我所做的工作。

到了这个位置

C:\Users\<username here>\AppData\Local

并删除我的案例 heroku 文件夹中的文件。所以我删除了文件夹并运行cmd。这是工作

于 2019-12-14T19:48:53.220 回答
0

我遇到了一个愚蠢的错误。我在 Windows 10 机器上为我的 golang 工作区设置了系统范围和用户变量路径。当我删除冗余系统变量路径并注销并重新登录时,我能够在 bash 中调用 .exe 文件并成功调用 go env。

尽管 OP 已得到解答,但这是另一个可能使 bash 无法看到您的路径的问题。我刚刚用这个问题再次测试了 bash,它似乎确实产生了某种冲突,阻止了 bash 遵循任一路径。

于 2018-06-30T19:17:22.723 回答
0

编辑/添加到 $PATH 变量时不要转义 (\) 特殊字符。例如,程序文件中的应用程序目录如下所示: PATH=$PATH:/c/Program Files (x86)/random/application

不要这样做:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

希望这可以帮助。

于 2016-08-16T22:03:42.510 回答
0

Windows 操作系统上的 Git bash 终端能够读取系统路径/用户路径并运行应用程序,但在以下情况下可能会丢失

  1. 应用程序添加到环境变量而不关闭终端
  2. MSYS / MinGW 正在转换您的路径
  3. 应用程序命令您尝试使用通用别名而不是原始调用方式

用例 - 1:

重新启动终端应该可以工作并使用以下命令来验证您的路径

env|grep PATH

用例 - 2:

让我用一个例子来解释一下,它docker不能直接在 git bash 终端上工作,对于这样的应用程序,MSYS 正在将其转换为原始路径。对于此类问题,您可能需要告诉您的终端使用命令忽略路径转换 MSYS_NO_PATHCONV=1 并继续执行您的实际执行命令,例如docker --help应该如下所示

MSYS_NO_PATHCONV=1  MSYS_NO_PATHCONV=1 docker run -dp 3000:3000 -w /app -v "$(pwd):/app" node:12-alpine sh -c "yarn install && yarn run dev"
717d12b9fe5211f0189ccbed0ba056ca242647812627682d0149ede29af472a4 

用例 - 3: 让我用一个示例azcli 来解释,最好是 az cli install in windows,因为az.cmd它被添加到系统/用户路径中。在 Windows 操作系统上,powershell 或命令提示符识别 az.cmdaz但 git bash 不会理解它 - 所以你可以使用别名来避免混淆说alias az='az.cmd'然后执行az --help 会为你工作

于 2021-05-11T03:21:35.387 回答
-2

对于那些尝试过所有上述方法的人,包括 Windows 系统环境。变量、.bashrc、.bashprofile 等,并且可以在 'echo $PATH' 中看到正确的路径……我可能会为您提供解决方案。

使用exec 2> /dev/null抑制错误

我的脚本运行良好,但抛出“找不到命令”或“未找到目录”错误,尽管据我所知,路径是刷新的。所以,如果你抑制这些错误(可能还必须添加'set +e'),它就会正常工作。

于 2018-03-02T16:26:52.667 回答
-3

创建一个名为 Path 的用户变量并添加为值 %Path%,据我所知,Git Bash 只看到用户变量而不是系统变量。通过执行上述过程,您将在用户变量中公开您的系统变量。

于 2015-04-01T14:42:56.417 回答
-3

在 Windows 7 路径环境变量中,我只是在系统变量路径的末尾添加

\;C:\Program Files\Git\bin

现在可以了!

于 2017-10-24T00:37:39.763 回答