Git Bash 看不到我的路径

当我使用 Git Bash (在 Windows 上)时,我不能在没有指定其完整路径的情况下运行任何可执行文件,尽管它位于 PATH 变量中的一个文件夹中。看来 Bash 没认出来。为什么?我能修好吗?

228893 次浏览

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

知道了。作为一个 Windows 用户,我习惯于键入不带扩展名的可执行文件名。在我的例子中,我想执行一个名为 cup.bat的文件。在 Windows shell 中,键入 cup就足够了。巴斯不是这样的,他想要全名。输入 cup.bat解决了这个问题。(但是我无法运行这个文件,因为很显然 bash 无法理解其中的内容)

又多了一个理由,换成上流社会的废物. 。

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

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

Git installation wizard

对我来说是这样的:)

对我来说,最方便的方法是: 1)在 C: drive 的根目录下创建目录“ bin” 2)在「我的电脑-> 属性-> 环境变数」中加入「 C:/bin; 」至 PATH

在@Daniel 的评论和@Tom 的回答之后,我发现 Git bash 确实在使用 PATH,但是没有使用我最近安装的最新路径。 为了解决这个问题,我在 home (windows)目录中添加了一个名为:

.bashrc

内容如下:

PATH=$PATH:/c/Go/bin

因为我正在安装 Go,这个路径包含可执行 go.exe 现在 Git bash 能够识别这个命令:

go

在我的情况下,也许只需要重新启动系统就足够了,但是我很高兴这个解决方案在任何情况下都可以工作。

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

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

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

希望这个能帮上忙。

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

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

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

mv config.bashrc .bashrc

这里的根本原因似乎是 Git Bash 不能总是正确地解析变量% USERPROFILE% 。而不是使它相对于 C: 用户,它获得值 C: WindowsSystem32系统配置文件 将其更改为完全限定的地址后,它就可以工作了,而且即使我随后将其设置回去,由于某种原因,Git Bash 仍然具有正确的 PATH。

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

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

; C: 程序文件 Git bin

现在起作用了!

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

当我尝试使用 mingw 在 Win10中编译 xgBostlib 时遇到了这个问题。最后我找到了解决办法。

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

例如:

PATH = $PATH: “/c/Program Files/mingw-w64/x86 _ 64-7.2.0-posx-seh-rt _ v5-rev1/mingw64/bin”

如果你已经尝试了上面提到的所有方法,包括 Windows 系统 env。变量。巴希尔。Bashprofile 等等。并且可以在‘ echo $PATH’中看到正确的路径... 我可能有一个解决方案给你。

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

我的脚本运行良好,但抛出了“命令未找到”或“未找到目录”错误,尽管就我所知,路径是刷新的。因此,如果您禁止这些错误(可能还必须添加‘ set + e’) ,那么它将正常工作。

这是个老问题了,但它能帮到别人。

我已经改变了 PATH 用户范围,之后我只需注销并再次登录。

就是这样! git bash正确地加载了新的 PATH 值。

我犯了个愚蠢的错误。我在 windows 10机器上为我的 golang 工作区设置了一个系统范围和一个用户可变路径。当我删除冗余的系统变量路径,并注销和恢复,我能够呼叫。在 bash 中执行 exe 文件,并成功调用 go env。

尽管 OP 已经得到了回答,但这是另一个可能使 bash 无法看到您的路径的问题。我刚刚用这个问题再次测试了 bash,它似乎提供了某种冲突,阻止 bash 遵循这两条路径中的任何一条。

在 Windows 10下,卸载 git 然后重新安装,它会自动为你设置环境变量。 我错误地删除了这个环境变量,因此我无法在 IDE 中使用 git。重新安装 git 修复了这个问题。

我知道这是一个老问题,但有两种类型的环境变量。一个拥有用户和一个系统广泛。 根据你如何打开 git bash (使用用户权限或管理员权限) ,所使用的环境变量 PATH 可以来自你的用户变量,也可以来自系统变量。 见下文: enter image description here

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

在我的情况下,它发生在安装 heroku cli 和 git bash 时, 这就是我的工作。

到了这个地方

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

并删除我的案件 Heroku 文件夹中的文件。 所以我删除文件夹并运行 cmd。它是工作

如果你的 git-bashPATH出现,但不是最新的和 你不会想要重启的但再生你的 PATH,你可以尝试以下方法:

  • 关闭所有 cmd.exepowershell.exegit-bash.exe,并从开始菜单或桌面上下文重新打开一个 cmd.exe 窗口。
  • 如果您更改了系统范围的 PATH,您可能还需要打开一个特权 cmd 窗口。
  • 从文件资源管理器上下文菜单中打开 Git bash,查看是否更新了 PATH env。
  • 如果这不起作用,您可能需要关闭所有 Windows Explorer进程,并重试上述步骤。

注意: 这并不适用于所有 Windows 版本,除了开始菜单或桌面上下文菜单,在其他任何地方打开 cmd.exe都可能无法工作 ,在我的4台计算机上进行了测试,其中3台可以工作。我不知道为什么会这样,但是因为当我登录和注销的时候环境变量会自动生成,所以我不会用变量串联来破坏这个变量。

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

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

用例一:

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

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: 让我用一个示例 az cli 来解释,最理想的情况是 az cli 安装在 windows 中,作为 az.cmd添加到系统/用户路径中。在 windows 操作系统上,Powershell 或命令提示符识别 az.cmdaz,但 git bash 不会理解它-所以你必须使用别名来避免混淆,比如 alias az='az.cmd',然后执行 az --help就可以了