Git Bash看不到我的PATH

138

我在Windows上使用Git Bash时,如果没有指定执行文件的完整路径,就无法运行任何可执行文件,即使它们位于我的PATH变量中的文件夹中。看起来Bash不识别这些文件。为什么?我能否修复这个问题?


1
你能展示一下你的 PATH 变量里具体有哪些内容吗? - choroba
1
这与我的问题有什么关系?如果你怀疑它格式不正确,我可以肯定它不是,因为我可以使用常规的Windows shell(cmd)运行相同的可执行文件。 - ulu
@ulu:这与你的问题有关,因为PATH变量决定了可以找到哪些可执行文件...在Bash shell中,PATH变量是什么样子? - jalf
特别是,它包含/e/Programs/Tools/bin在接近结尾的某个地方,这是我感兴趣的路径。也许问题在于我正在尝试运行一个批处理文件? - ulu
21个回答

85

明白了。作为Windows用户,我习惯于在不添加文件扩展名的情况下输入可执行文件名。在我的情况下,我想要执行一个名为cup.bat的文件。在Windows shell中,只需键入cup即可。但是Bash不是这样工作的,它需要完整的名称。输入cup.bat解决了问题。(然而,我无法运行该文件,因为显然bash无法理解其内容)

这是转向posh-git的另一个原因。

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


7
你可以使用别名来缩短名称:alias cup=cup.bat - Vitali
2
Windows使用PATH和PATH_EXTENSIONS来解析可执行文件,而Linux世界只使用PATH。 - Ferrybig
2
你的shell脚本绝对不应该被命名为.bat,这个扩展名意味着它是一个Windows批处理脚本 - 特别是在Windows机器上。 - tripleee
1
posh-git 解决了什么问题?你不再需要输入扩展名了吗? - Qwerty
@Qwerty posh是一个PowerShell控制台,切换到它意味着更加Windows友好的控制台,具有所有熟悉的命令和快捷键。是的,就像在任何Windows控制台上一样,您不必输入“.exe”或“.bat”。 - ulu
我一直在寻找为什么在 Git Bash 中运行 npm --version 会一直给出旧版本。而 npm.cmd --version 则会给出正确的版本。 - Sarsaparilla

61

也许bash看不到你的Windows路径。在bash中输入env|grep PATH确认它看到了哪个路径。


1
它说:PATH=/c/Users/ulu/bin:.:/usr/local/bin:/mingw/bin:/bin:/e/Programs/Ruby/bin:/c/P rogram Files/Common Files/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/ - ulu
2
尝试运行“which your_batch_file.bat”(不带引号)。如果批处理文件确实在路径中,它应该返回批处理文件的位置。 - Tom
21
如何为 git-bash 添加路径以便查看? - Angel S. Moreno
14
请在你的主目录下更新或创建一个“.bashrc”文件(例如,在git bash/cygwin中执行“vim ~/.bashrc”),然后将“PATH=$PATH:<your_path_1>:<your_path_2>:...:<your_path_n>”添加到该文件中。因此,如果你想要将“/usr/bin/mypath”加入到PATH变量中,这一行应该写成: PATH=$PATH:/usr/bin/mypath - Daniel
2
在我的情况下,只需重新启动系统即可看到我的新路径变量。 - Emanuele Bellini

43

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

.bashrc

并且内容如下:

PATH=$PATH:/c/Go/bin

因为我正在安装Go,而这个路径包含可执行文件go.exe。现在,Git Bash能够识别命令:

go

也许在我的情况下只需系统重启就足够了,但我很高兴这个解决方案可以在任何情况下都起作用。


而要添加多个路径呢? - arxakoulini
PATH=$PATH:/c/Go/bin:/c/other/path - Mikaël Mayer
你说的“home windows directory”是什么意思?请具体说明。 - Dr. Mian
c:/Users/[myusername]/ 这是我的主目录。 - Mikaël Mayer

12

在安装 Git 时,你可以选择下面展示的选项,它会自动帮你设置路径。

Git installation wizard

对我来说这个方法很好用 :)


1
@eranotzap 重新安装Git,使用备选选项? :) - Brett Ryan
1
请设置环境变量,否则重新安装Git。 - Muthamizhchelvan. V
这如何帮助让git bash使用路径,当最终结果是git bash甚至都没有安装? - Jules
@Jules 不,安装Git Bash时它会要求您选择三个选项,就像屏幕截图中所示,您可以根据需要选择任何一个选项,Git Bash将安装所选选项。 - Muthamizhchelvan. V

10
如果你的git-bash的PATH存在但不是最新的,而且你又不想重新启动,而是要重新生成你的PATHs,你可以尝试以下操作:
关闭所有的 cmd.exepowershell.exegit-bash.exe,然后从开始菜单或桌面上下文重新打开一个 cmd.exe 窗口。 如果您更改了系统范围的 PATH,您可能还需要打开一个特权 cmd 窗口。 从 Windows 资源管理器上下文菜单中打开 Git bash 并检查是否更新了 PATH 环境变量。请注意,IntelliJ IDEA 中的终端可能是登录 shell 或其他一些特殊类型,因此其中的 PATH 可能不会更改,直到重新启动 IDEA。 如果这样做不起作用,您可能需要关闭所有的 Windows Explorer 进程,然后重试上述步骤。 使用任务管理器关闭所有的 Windows Explorer 进程:
  1. 应用程序 - Windows Explorer - 右键单击 - 结束任务
  2. 向下滚动
  3. Windows 进程 - Windows Explorer - 右键单击 - 重启

注意:这并不适用于所有的Windows版本,而且在开始菜单或桌面上下文菜单以外的任何地方打开cmd.exe可能无法正常工作,我已经在我的4台电脑上测试过了,其中3台可以正常工作。我没有弄清楚为什么会这样,但由于PATH环境变量在我登录和注销时会自动生成,所以我不想通过变量拼接来搞乱这个变量。


关闭所有的Windows终端和Git Bash解决了这个问题。我尝试过执行source bashrc,但实际上是这样解决的。 - Kaito

10

在向PATH添加新值后,请重新启动计算机。


3
计算机不需要重新启动,终端会话需要重新启动。 - christianbundy
5
我不确定,但似乎有时重启终端没有帮助,而重启电脑可以解决问题,所以我写了这个答案。重新启动终端是我尝试的第一步。 - Pavel
2
如此简单的答案,而且完全有效。 - bobanahalf
1
@Pavel:完全正确。重新启动终端没有帮助,但是重新启动计算机有帮助。也许注销会足够……不过我没有尝试过。 - Ohumeronen

10
在C:\Users\USERNAME下创建一个名为config.bashrc的文件,并将以下内容添加进去:
PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space

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

4

虽然这是一个旧问题,但它可以帮助其他人。

我已经全局更改了我的PATH变量,然后我只是注销并重新登录了一次。

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


不关闭 Git Bash 或注销的情况下是否可能。我的意思是我想设置路径变量,并且可以在当前的 Git Bash 中使用它。 - KCS
也许你可以这样做:export PATH=$NEW_PATH:$PATH。然后正常进行操作。 - fernandosavio

2
我知道这是一个老问题,但有两种类型的环境变量。一种是属于用户的,另一种是系统范围的。 根据你使用哪种权限打开git bash(用户权限还是管理员权限),使用的环境变量PATH可以是你的用户变量或系统变量。 如下所示: enter image description here 如之前的回答所述,请使用命令env|grep PATH检查你正在使用哪一个,并相应更新你的变量。 顺便说一句,无需重新启动系统。只需关闭并重新打开git bash即可。

2

我可以确认重新启动系统会确保 git 使用在 Windows 环境变量中设置的 PATH,并且没有其他自动方式。


1
重新启动终端就足以选择新路径。 - Vikas Tawniya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接