【问题标题】:Git Bash doesn't see my PATHGit Bash 看不到我的 PATH
【发布时间】:2012-05-27 17:00:23
【问题描述】:

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

【问题讨论】:

  • 你能显示你的 PATH 变量到底是什么吗?
  • 嗯,这与我的问题有什么关系?如果您怀疑它格式错误,我确定不是,因为我可以使用常规 Windows shell (cmd) 运行相同的可执行文件。
  • @ulu:这与您的问题有关,因为 PATH 变量决定了可以找到哪些可执行文件...... PATH 变量在 Bash shell 中是什么样的?
  • 特别是,它包含接近末尾的 /e/Programs/Tools/bin ,这是我感兴趣的路径。也许问题是我正在尝试运行一个 bat 文件?

标签: windows bash git-bash


【解决方案1】:

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

【讨论】:

  • 它说:PATH=/c/Users/ulu/bin:.:/usr/local/bin:/mingw/bin:/bin:/e/Programs/Ruby/bin:/c /程序文件/通用文件/Microsoft Shared/Windows Live:/c/Program Files (x86)/C ommon Files/Microsoft Shared/Windows Live:/c/Windows/system32:/c/Windows:/c/Wind ows /System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/:/e/Program Files (x86)/Microsoft SQL Server/90/Tools/binn/
  • 尝试运行“which your_batch_file.bat”(不带引号)。如果它确实在路径中,它应该返回您的批处理文件的位置。
  • 如何添加路径让 git-bash 看到?
  • @AngelS.Moreno 在你的主目录下更新或创建一个“.bashrc”文件(例如 git bash/cygwin 中的“vim ~/.bashrc”),然后添加“PATH=$PATH:::...:" 到这个文件。因此,如果您希望“/usr/bin/mypath”位于 PATH 变量中,则此行将显示为:PATH=$PATH:/usr/bin/mypath
  • 在我的情况下,重新启动系统就足够了,以便在那里看到我的新路径变量。
【解决方案2】:

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

切换到 posh-git 的另一个理由..

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

【讨论】:

  • 您也可以使用别名来缩短名称:alias cup=cup.bat
  • Windows 使用 PATH 和 PATH_EXTENSIONS 来解析可执行文件,而 Linux 世界只使用 PATH
  • 你的shell脚本绝对不应该被称为任何东西.bat;扩展名意味着一个 Windows 批处理脚本——尤其是在 Windows 机器上。
  • posh-git 解决了什么问题?您不再需要输入扩展名了吗?
  • @Qwerty posh 是一个 Powershell 控制台,切换到它意味着一个对 Windows 更友好的控制台,其中包含所有熟悉的命令和快捷方式。是的,就像在任何 Windows 控制台上一样,您不必输入“.exe”或“.bat”
【解决方案3】:

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

它为我解决了:)

【讨论】:

  • @eranotzap 使用备用选项重新安装 Git? :)
  • @eranotzap 设置环境变量,否则重新安装 Git
  • 当最终结果是 git bash 甚至不会被安装时,这如何帮助 git bash 使用路径?
  • @Jules 不,在安装 Git Bash 时,它会询问您提供的选项,如屏幕截图所示,您可以根据需要选择任何一个询问,git bash 将与选择一起安装选项。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    根据@Daniel 的评论并感谢@Tom 的回答,我发现 Git bash 确实在使用 PATH 但不是我最近安装的最新路径。 为了解决这个问题,我在我的主(windows)目录中添加了一个文件,名为:

    .bashrc

    内容如下:

    PATH=$PATH:/c/Go/bin

    因为我正在安装 Go 并且此路径包含可执行文件 go.exe 现在 Git bash 能够识别命令:

    go

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

    【讨论】:

    • 并添加多个路径?
    • PATH=$PATH:/c/Go/bin:/c/other/path
    • 你的windows目录是什么意思?请说明。
    • c:/Users/[myusername]/ 这是我的主目录
    【解决方案6】:

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

    【讨论】:

      【解决方案7】:

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

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

      希望这会有所帮助。

      【讨论】:

      • PATH=$PATH:/c/Program Files (x86)/random/application ... 这不是设置 PATH 的正确 bash 语法。这将临时将目录/c/Program 添加到路径中,然后尝试使用参数(x86)/random/application 运行程序Files。您的“不要这样做”示例的唯一错误是,当单反斜杠正确时,括号的反斜杠加倍。
      【解决方案8】:

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

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

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

      mv config.bashrc .bashrc
      

      【讨论】:

        【解决方案9】:

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

        【讨论】:

          【解决方案10】:

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

          【讨论】:

          • 计算机不需要重启,终端会话需要。
          • @christianbundy 我不确定,但看起来有时重启终端没有帮助,但重启计算机有帮助,所以我写了这个答案。重启终端是第一个,我试试。
          • 这么简单的答案,完全有效。
          【解决方案11】:

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

          \;C:\Program Files\Git\bin

          现在可以使用了!

          【讨论】:

            【解决方案12】:

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

            【讨论】:

            • 重启终端就可以选择新路径了
            【解决方案13】:

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

            在您的主目录(通常是 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"

            【讨论】:

              【解决方案14】:

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

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

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

              【讨论】:

              • 这似乎只是在忽略错误,并没有解决问题的根本原因。
              【解决方案15】:

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

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

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

              【讨论】:

              • 是否可以不关闭 git bask 或注销。我的意思是我想设置路径变量,我可以使用它当前的 git bash
              • 也许你可以这样做:export PATH=$NEW_PATH:$PATH。并正常做事
              【解决方案16】:

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

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

              【讨论】:

                【解决方案17】:

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

                【讨论】:

                  【解决方案18】:

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

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

                  【讨论】:

                    【解决方案19】:

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

                    到了这个位置

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

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

                    【讨论】:

                      【解决方案20】:

                      如果您的git-bashPATH 存在但不是最新的并且您不想重新启动 但重新生成您的PATHs,您可以尝试以下操作:

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

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

                      【讨论】:

                        【解决方案21】:

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

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

                        用例 - 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: 让我以az cli 为例进行解释,理想情况下,az cli 在 windows 中安装为az.cmd,它被添加到系统/用户路径中。在 Windows 操作系统上,powershell 或命令提示符将 az.cmd 识别为 az 但 git bash 不会理解它 - 所以你必须使用别名来避免混淆说 alias az='az.cmd' 然后执行 az --help 将为你工作

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2019-05-19
                          • 1970-01-01
                          • 2017-09-21
                          相关资源
                          最近更新 更多