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::知道了。作为 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-bash
的PATH
存在但不是最新的并且您不想重新启动 但重新生成您的PATH
s,您可以尝试以下操作:
cmd.exe
、powershell.exe
和git-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的主要内容,如果未能解决你的问题,请参考以下文章
Docker 命令在 Windows 上的 Git Bash 中不起作用(执行:“com.docker.cli”:在 %PATH% 中找不到可执行文件)