Git Bash没有看到我的路径


107

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


1
您可以显示PATH变量中的确切内容吗?
choroba 2012年

嗯,这和我的问题有什么关系?如果您怀疑它格式错误,那么我可以肯定它不是,因为我可以使用常规Windows Shell(cmd)运行相同的可执行文件。
ulu 2012年

@ulu:这与您的问题有关,因为PATH变量决定了可以找到哪些可执行文件... Bash shell中的PATH变量是什么样的?
2012年

特别是,它在靠近结尾处包含/ e / Programs / Tools / bin,这是我感兴趣的路径。也许问题是我正在尝试运行bat文件?
ulu 2012年

Answers:


64

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

切换到posh-git的另一个原因。

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


5
您也可以使用别名来缩短名称:alias cup=cup.bat
Vitali Dettling

Windows使用PATH和PATH_EXTENSIONS来解析可执行文件,而Linux世界仅使用PATH
Ferrybig

您的shell脚本绝对不应被称为任何东西.bat;该扩展名意味着Windows批处理脚本-尤其是在Windows计算机上。
点钟

posh-git解决什么问题?您不需要再输入扩展名吗?
Qwerty

@Qwerty posh是Powershell控制台,切换到它意味着对Windows更友好的控制台,其中包含所有熟悉的命令和快捷方式。是的,就像在任何Windows控制台上一样,您不必键入“ .exe”或“ .bat”
ulu

53

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


1
它说:PATH = / c / Users / ulu / bin:。:/ usr / local / bin:/ mingw / bin:/ bin:/ e / Programs / Ruby / bin:/ c / P rogram Files / Common Files / Microsoft共享/ Windows Live:/ c /程序文件(x86)/常见文件/ Microsoft共享/ 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 /
ulu 2012年

2
尝试运行“ which your_batch_file.bat”(不带引号)。如果它确实在路径中,它将返回您的批处理文件的位置。
汤姆(Tom)

15
如何为git-bash添加路径以查看?
天使S.莫雷诺

14
@ AngelS.Moreno更新或在您的主目录下创建“ .bashrc”文件(例如,git bash / cygwin中的“ vim〜/ .bashrc”),然后添加“ PATH = $ PATH:<您的路径_1>:<您的路径_2>”。 ..:<您的路径_n>”到此文件。因此,如果您希望“ / usr / bin / mypath”位于PATH变量中,则此行将显示为:PATH = $ PATH:/ usr / bin / mypath
Daniel Daniel

35

跟随@Daniel的评论并感谢@Tom的回答,我发现Git bash确实在使用PATH,但没有使用我最近安装的最新路径。要变通解决此问题,我在主目录(windows)中添加了一个文件,名称为:

.bashrc

内容如下:

PATH=$PATH:/c/Go/bin

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

go

就我而言,也许只需重启系统就足够了,但是我很高兴在任何情况下都可以使用此解决方案。


并添加多个路径?
Nikiforos

PATH=$PATH:/c/Go/bin:/c/other/path
米卡·迈耶

您是指Windows主目录吗?请明确说明。
Mian Asbat Ahmad

c:/Users/[myusername]/这是我的主目录
麦克尔迈耶

9

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

Git安装向导

它为我解决了:)


1
@eranotzap使用替代选项重新安装Git吗?:)
布雷特·瑞安

1
@eranotzap设置环境变量,否则重新安装Git
Muthamizhchelvan。V

当最终结果是什至不会安装git bash时,这如何帮助git bash使用路径?
Jules

@Jules不,在安装Git Bash时,它将要求您提供如屏幕截图所示的选项,您可以根据需要选择一个选项,git bash将与select选项一起安装。
Muthamizhchelvan。V

9

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

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

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

mv config.bashrc .bashrc

4

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


1
不需要重新启动计算机,终端会话需要重新启动。
christianbundy

2
@christianbundy我不确定,但是好像有时重启终端没有帮助,但是重启计算机很有帮助,所以我写了这个答案。重新启动终端是我尝试的第一个。
帕维尔

这样简单的答案,完全有效。
bobanahalf

4

旧问题,但可以帮助其他人。

我已经更改了整个PATH用户的身份,之后我刚刚注销并再次登录。

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


是否可以不关闭git bask或注销。我的意思是我想设置路径变量,并且我可以使用它作为当前git bash
KCS

也许你可以这样做:export PATH=$NEW_PATH:$PATH。并正常做事
fernandosavio

2

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


1

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


1

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


1

如果你git-bashPATH礼物,但不是最新的,你不想重新启动,但重新生成PATHS,你可以尝试关闭所有cmd.exepowershell.exe以及git-bash.exe从开始菜单或桌面重新打开一个窗口CMD.EXE,看看是否PATHENV更新。如果在系统范围内进行了更改PATH,则还需要打开一个特权cmd窗口。

注意:此功能不适用于所有Windows版本,并且cmd.exe在“开始菜单”或“桌面”以外的任何地方打开都可能无法正常工作,并在我的3台计算机上进行了测试,其中2台可以使用。我没有弄清楚为什么会这样,但是由于PATH登录和注销时会自动生成环境变量,因此我不会使用变量串联来弄乱该变量。


0

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


0

当我尝试使用mingw编译Win10中的xgboost库时,我遇到了这个问题。终于我找到了解决方案。

在主目录(通常为C:\ Users \ username)中创建一个名为.bashrc的文件。然后添加路径。如果您的路径包含空格,请记住使用引号,并且请记住使用/ c /而不是C:/

例如:

PATH = $ PATH:“ / c /程序文件/mingw-w64/x86_64-7.2.0-posix-seh-rt_v5-rev1/mingw64/bin”


0

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

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


0

我知道这是一个老问题,但是有两种类型的环境变量。一台归User所有,一台遍及整个系统。根据您如何打开git bash(具有用户权限或具有管理员权限),所使用的环境变量PATH可以来自您的用户变量,也可以来自系统变量。见下文: 在此处输入图片说明

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


0

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

到达这个位置

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

并删除我的heroku文件夹中的文件。所以我删除了文件夹并运行cmd。这是工作


-1

编辑/添加到$ 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到路径,然后尝试Files使用arguments 运行程序(x86)/random/application。您的“请勿执行此操作”示例的唯一错误是,当单个反斜杠正确时,它会将括号的反斜杠加倍。
Jules

-2

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

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

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


1
这似乎只是在忽略错误,而不是解决问题的根本原因。
nmio

-3

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


-3

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

\; C:\ Program Files \ Git \ bin

现在就可以了!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.