Windows&Git Bash:Bash PATH以读取Windows%PATH%系统变量


27

我最近通过进入控制面板->系统->高级系统设置->环境变量->用户变量-> PATH手动将目录添加到Windows PATH。(Windows 7,64位。)

重新启动并启动cmd.exe后,echo %PATH%表明此方法有效:我在输出中看到了最近添加的目录。

但是,启动Git Bash之后,的输出echo $PATH不包含此目录。

我可以export PATH=$PATH:/c/my/path在bashrc中添加,但是我宁愿Git Bash从Windows获取PATH,所以我不必记住将路径添加到两个位置。如何做到这一点?

(一个更一般的相关问题是,是什么设置了Git Bash的$ PATH?我看到在不同位置重复了几个条目,Windows%PATH%中的某些内容在Git Bash的$ PATH中,而其他情况没有。我收到触摸$ PATH的Git Bash提示?)


有问题的路径可能很重要:C:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin
艾哈迈德·法西

Answers:


6

msysgit git bash会话使用脚本share/WinGit/Git Bash.vbs,该脚本不会访问或修改环境变量PATH(例如,在此不相关的vbs脚本中将是如此

git bash会话将简单地添加到您当前的会话前面PATH

.:/usr/local/bin:/mingw/bin:/bin:

与msysgit打包在一起的mingw会话可能不会考虑bin来自其他mingw安装的源:您可以通过在您的目录中设置另一个(简单)目录来检查它,PATH并查看它在git bash会话中是否仍然可见。如果不是,那么这是一个更普遍的问题,涉及您要添加到PATH的所有目录。


1
这似乎是不正确的。当我启动git bash时,它的路径是由某个进程设置的,该进程显然是通过某个进程转换Windows PATH变量的。它不像添加额外的项目那么简单:';' 转换为“:”,驱动器说明符将转换为目录名称,并且还会发生其他一些转换。在某些情况下,这种转换是错误的- "c:\Program Files\Java\jdk1.8.0_25"\bin在我的Windows路径中,将其转换为/c/Program Files/Java/jdk1.8.0_25"/bigit bash路径(请注意缺少第一个和最后一个字符)...所以问题是,这是怎么发生的?
Jules '18

@Jules确实有可能。五年来发生了很多变化。
VonC

5

这是我针对类似问题(在Windows 10上为MSYS2 bash)的小型解决方案。

想法是将所需的路径转换为Unix样式的路径,并将其附加到bash $ PATH中,所有这些操作均在.bashrc中完成。

不要将必需的路径附加到Win PATH。而是在Windows中创建一个新的环境变量,例如MSYS2_WINPATH,并将所有以分号分隔的Windows路径目录附加到此变量中。将%MSYS2_WINPATH%附加到%PATH%。

现在将其插入您的.bashrc-

################################## Construct PATH variable ##################################

winpath=$(echo $MSYS2_WINPATH | tr ";" "\n" | sed -e 's/\\/\\\\/g' | xargs -I {} cygpath -u {})
unixpath=''

# Set delimiter to new line
IFS=$'\n'

for pth in $winpath; do unixpath+=$(echo $pth)":"; done

export PATH=$(echo $PATH:$unixpath | sed -e 's/:$//g')
unset IFS
unset unixpath
unset winpath

################################# Constructed PATH variable #################################

在git-bash中进行了尝试,并且没有.bashrc的解决方法。谢谢!
Michael Haidl '18

得知您很高兴:)不客气。
anubhav

2

如果在将用户的PATH变量串联到环境PATH变量之后PATH值太长,Windows将无提示地将用户PATH变量串联。

在安装新软件并将其添加到PATH之后,很容易发生这种情况,从而破坏了现有的已安装软件。Windows失败!

最好的解决方法是在“控制面板”中编辑PATH变量之一,然后删除不需要的条目。然后打开一个新的CMD窗口,查看是否所有条目都显示在“ echo%PATH%”中。


1

尝试将目录移动到path变量的开头。安装p4merge之后,我遇到了与您相同的问题。将perforce目录添加到路径中,并通过cmd.exe找到了p4merge,但没有找到git shell(mingw)。经过毫无结果的搜索后,我尝试仅编辑变量,以使perforce目录首先出现在我的路径中。我启动了git shell,瞧,该目录包含在的输出中$ echo $path,并$ p4merge打开p4merge。

这是一个la脚的答案,因为我不知道它为什么起作用,但是如果变通办法可以帮助其他人,那就太好了。

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.