当我使用 Git Bash(在 Windows 上)时,如果不指定其完整路径,我将无法运行任何可执行文件,尽管它位于我的 PATH 变量中的文件夹中。看起来 bash 无法识别它。为什么?我可以修复它吗?
21 回答
知道了。作为 Windows 用户,我习惯于键入不带扩展名的可执行文件名。就我而言,我想执行一个名为cup.bat
. 在 Windows shell 中,键入cup
就足够了。Bash 不是这样工作的,它需要全名。打字cup.bat
解决了这个问题。(虽然我无法运行该文件,因为显然 bash 无法理解它的内容)
切换到 posh-git 的另一个原因..
感谢@Tom 为我指明了正确的方向。
也许 bash 看不到您的 Windows 路径。键入env|grep PATH
bash 以确认它看到的路径。
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.
在安装 Git 时,您可以选择如下所示的选项,它会帮助您自动设置路径。
它为我解决了:)
在 C:\Users\USERNAME 中创建一个名为 config.bashrc 的文件,其中包含:
PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space
现在将命令行上的文件移动到正确的位置:
mv config.bashrc .bashrc
将新值添加到 PATH 后重新启动计算机。
老问题,但它可以帮助别人。
我已经更改了我的 PATH 用户范围,之后我刚刚注销并再次登录。
这就对了!git bash
正确加载了新的 PATH 值。
如果您git-bash
的PATH
礼物但不是最新的,并且您不想重新启动而是重新生成您PATH
的 s,您可以尝试以下操作:
- 关闭所有
cmd.exe
、powershell.exe
和 ,git-bash.exe
然后从“开始”菜单或桌面上下文重新打开一个 cmd.exe 窗口。 - 如果您更改了 system-wide
PATH
,您可能还需要打开一个特权 cmd 窗口。 - 从 Windows 资源管理器上下文菜单中打开 Git bash 并查看
PATH
env 是否已更新。请注意,IntelliJ IDEA 中的终端可能是登录 shell 或其他某种魔法,因此PATH
在您重新启动 IDEA 之前它可能不会改变。 - 如果这不起作用,您可能还需要关闭所有
Windows Explorer
进程并重试上述步骤。
注意:这不适用于所有 Windows 版本,并且cmd.exe
在“开始”菜单或桌面上下文菜单以外的任何地方打开可能无法正常工作,在我的 4 台计算机上进行了测试,其中 3 台可以正常工作。我不知道为什么会这样,但是由于PATH
环境变量是在我登录和注销时自动生成的,所以我不会用变量连接来搞乱那个变量。
我可以确认重启系统会确保windows环境变量中设置的PATH被git拾取,没有其他自动方式。
在 Windows 10 上,只需卸载 git 并重新安装即可。它会自动为您设置环境变量。我错误地删除了环境变量,我无法在我的 IDE 中使用 git。重新安装 git 解决了这个问题。
这里的根本原因似乎是 Git Bash 无法始终正确解析变量 %USERPROFILE% 。它不是相对于 C:\Users\\ 而是获得值 C:\Windows\System 32\systemprofile\ 将其更改为完全限定的地址后,它可以工作,即使我之后将其重新设置,Git Bash 仍然由于某种原因具有正确的 PATH 。
我在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"
对我来说最方便的是:1)在C:驱动器的根目录中创建目录“bin” 2)添加“C:/bin;” 到“我的电脑 -> 属性 -> 环境变量”中的 PATH
就我而言,它是在安装 heroku cli 和 git bash 时发生的,这就是我所做的工作。
到了这个位置
C:\Users\<username here>\AppData\Local
并删除我的案例 heroku 文件夹中的文件。所以我删除了文件夹并运行cmd。这是工作
我遇到了一个愚蠢的错误。我在 Windows 10 机器上为我的 golang 工作区设置了系统范围和用户变量路径。当我删除冗余系统变量路径并注销并重新登录时,我能够在 bash 中调用 .exe 文件并成功调用 go env。
尽管 OP 已得到解答,但这是另一个可能使 bash 无法看到您的路径的问题。我刚刚用这个问题再次测试了 bash,它似乎确实产生了某种冲突,阻止了 bash 遵循任一路径。
编辑/添加到 $PATH 变量时不要转义 (\) 特殊字符。例如,程序文件中的应用程序目录如下所示:
PATH=$PATH:/c/Program Files (x86)/random/application
不要这样做:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/
希望这可以帮助。
Windows 操作系统上的 Git bash 终端能够读取系统路径/用户路径并运行应用程序,但在以下情况下可能会丢失
- 应用程序添加到环境变量而不关闭终端
- MSYS / MinGW 正在转换您的路径
- 应用程序命令您尝试使用通用别名而不是原始调用方式
用例 - 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 install in windows,因为az.cmd
它被添加到系统/用户路径中。在 Windows 操作系统上,powershell 或命令提示符识别 az.cmd
为az
但 git bash 不会理解它 - 所以你可以使用别名来避免混淆说alias az='az.cmd'
然后执行az --help
会为你工作
对于那些尝试过所有上述方法的人,包括 Windows 系统环境。变量、.bashrc、.bashprofile 等,并且可以在 'echo $PATH' 中看到正确的路径……我可能会为您提供解决方案。
使用exec 2> /dev/null抑制错误
我的脚本运行良好,但抛出“找不到命令”或“未找到目录”错误,尽管据我所知,路径是刷新的。所以,如果你抑制这些错误(可能还必须添加'set +e'),它就会正常工作。
创建一个名为 Path 的用户变量并添加为值 %Path%,据我所知,Git Bash 只看到用户变量而不是系统变量。通过执行上述过程,您将在用户变量中公开您的系统变量。
在 Windows 7 路径环境变量中,我只是在系统变量路径的末尾添加
\;C:\Program Files\Git\bin
现在可以了!