Git Bash 看不到我的 PATH

Posted

技术标签:

【中文标题】Git Bash 看不到我的 PATH【英文标题】:Git Bash doesn't see my 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 文件? 【参考方案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 终端能够读取系统路径/用户路径并运行应用程序,但在以下情况下可能会丢失

    应用添加到环境变量而不关闭终端 MSYS / MinGW 正在转换您的路径 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 将为你工作

【讨论】:

以上是关于Git Bash 看不到我的 PATH的主要内容,如果未能解决你的问题,请参考以下文章

adb:在 Git Bash 中找不到命令

Git错误:找不到程序:u'bash'

Docker 命令在 Windows 上的 Git Bash 中不起作用(执行:“com.docker.cli”:在 %PATH% 中找不到可执行文件)

GIT Bash错误= bash:winpty:找不到命令

-bash:__git_ps1:找不到命令

bash:git:在 MSYS 中找不到命令