Git Bash for Windows (v 4.4.19( 将"C:/Program Files/Git
"挂载为"/
"并将"C:/Program Files/Git/usr/bin
"挂载为"/bin
">
这意味着/usr/bin
和/bin
将装载到完全相同的底层 Windows 文件夹。 这会产生问题,因为除非我直接/c/Program Files/git/cmd
添加到我的 PATH 中,否则无法识别bash
和git
。
有配置文件可以更改此设置吗? 为什么同一个文件夹被挂载两次?
将/bin
链接到/usr/bin
现在也在许多Linux和Unix发行版上完成。你可以在这里阅读理由:https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/
在调用 bash 之前,请确保将%PATH%
(Windows CMD PATH(设置为:
set G=c:pathtolatestgit
set PATH=%G%bin;%G%usrbin;%G%mingw64bin
set PATH=%PATH%;C:windowssystem32;C:windowsSystem32Wbem;C:windowsSystem32WindowsPowerShellv1.0
然后,您将在 bash 中看到以下会话:
/usr/bin
设置为%G%usrbin
和%G%mingw64bin
的完整内容/bin
仅显示%G%bin
以及内置命令
那是:
vonc@vonc:/$ ls /usr/bin|wc -l
1160
vonc@vonc:/$ ls /bin|wc -l
149
这始于2015年MingW2的支持,后来是mingw-w64项目。
然而,/bin
被安装到%G%usrbin
.
有配置文件可以更改此设置吗?
是:/etc/mtab
$ cat /etc/mtab
D:/prgs/git/latest / ntfs binary,noacl,auto 1 1
D:/prgs/git/latest/usr/bin /bin ntfs binary,noacl,auto 1 1
C:/Users/vonc/AppData/Local/Temp /tmp ntfs binary,noacl,posix=0,usertemp 1 1
所以/bin
只挂载一次:to .
为什么同一个文件夹被挂载两次?
由于/
被挂载到%G%
,/usr/bin
也是%G%usrbin
的参照(不是挂载(。
Git 2.5.2.2(2015 年 9 月(通过问题 405 和提交 bf980fd 说明了这一点。(另见PR 79(。
我自己在Windows上使用Conda时遇到了这个问题。我相信答案在 Cygwin 安装表文档中给出。默认情况下,Cygwin会自动将{cygwin-prefix}bin
挂载到/usr/bin
。但是,如果您的/etc/fstab
中有一个条目将其他内容挂载到/usr/bin
,则可以覆盖此行为。GitHub 上的这段代码看起来像该逻辑的实现。
现在精明的读者会注意到这是倒退!在最初的问题中,以及我对康达的经验,{cygwin-prefix}usrbin
被安装到/bin
.这是因为MSYS2使用Cygwin的分支作为运行时,切换了前缀模式。
无论哪种方式,如果您可以 编辑您的/etc/fstab
,您可以避免该问题。对于我在 IE Edge Windows 10 VM 中的 Mambaforge 安装,以下行添加了一个冗余的装载,但会阻止阴影:
C:/Users/IEUser/mambaforge/Library/bin /bin whatever binary,posix=0,noacl,user 0 0
我认为,在前两项中添加/usr
将适合股票Cygwin设置。
PS:至少在Conda安装中,我应该注意,虽然此解决方案在技术上是正确的,但我发现它无法可靠地工作,因为软件包更新将覆盖您的/etc/fstab
文件。git
和m2-filesystem
包都提供(略有不同,叹息(文件的版本。我还没有尝试过,但有可能/etc/fstab.d
中特定于用户的文件 ,如上面链接的 Cygwin 文档所述,可能会提供一种避免此问题的方法。但我只是用我的$PATH摸索。