如何在所有路径中摆脱Cygwin的/ cygdrive前缀?


36

我从Git for Windows附带的bash shell切换到Cygwin,遇到一个奇怪的问题。有人认为添加/cygdrive/所有路径将是一个好主意,而我认为这是一个非常丑陋的主意。我已经确定可以通过添加来部分解决此问题

mount --change-cygdrive-prefix /
export HOME=/c/Users/BZISAD0

在我的.bashrc中,但是如果我看一下PATH变量,所有内容仍然都包含/ cygdrive /。我想我可以写一个脚本来修复PATH,但这比我已经做的还要麻烦。我们有了一个更好的办法,我敢确信那里是因为Git的bash shell中使用(据我所知)旧版本的Cygwin,它以某种方式配置为前插/cygdrive无处不在。那么,如何将“吸盘”旋钮调到零?

加里·拉尔森漫画

Answers:


39

在/ etc中四处寻找,发现了Googling没有的链接。事实证明您可以在文件中控制它/etc/fstab。只需添加一行,

none / cygdrive binary 0 0

并且问题应该得到解决。.bashrc中不再存在任何乱码修复程序,也没有混乱的$ PATH。


2
我使用了这种方法,现在当我尝试这样做时ls /,Windows驱动器不会出现。即使使用也不行ls -l /。这是预期的吗?可以解决吗?这是我在fstab中所拥有的:none / cygdrive binary,posix=0,user,acl 0 0
Tibi 2014年

我不知道有什么方法可以将Windows驱动器安装到/。你以前有吗?(或者在/cygdrive/?处)我一直生活在一个事实中,即我必须知道哪些Windows驱动器可用,而且无论如何我几乎从未使用过它们。
iconoclast 2014年

1
是的,ls /cygdrive应该列出Windows驱动器。例如,对我来说输出为c/ e/ f/。注意如何将驱动器视为文件夹。
2014年

1
这只有一半有效。这两个安装座(真实/cygdrive)有点重叠。那就是:你可以使用驱动器获得/c等等 -但他们从来没有列为一部分/。我认为真正/的隐藏了cygdrive上市时的内容。我想知道这是否是技术上未定义的行为,并且可能会破坏某些内容。无论如何,由于我希望能够看到正在使用的任何内容,因此我选择了/mnt
underscore_d

1
@Tibi我发现,如果您CD到/,然后执行mkdir c(或驱动器的名称),它将使该驱动器安装点对ls可见,而不是用空目录覆盖它。谁曾想到?
barksdml '16

10

方法一

mount -c /
mount -m > /etc/fstab

方法二

echo - / cygdrive acl > /etc/fstab


在执行此操作之前和之后(方法1),都/指向cygwin64根目录,并且cd /c不起作用。做cd /c工作我必须做mount c: /c
MM

/c应该永远不会工作,我的解决方案永远不会建议
Steven Penny

2
我将“如何摆脱路径中的/ cygdrive”解释为“如何使/ c代替/ cygdrive / c来工作”(其他字母也类似)。我的PATH现在确实显示了/ c / bla而不是/ cygdrive / c / bla
MM

1
截至2.9.0(0.318 / 5/3)2017-09-12 10:18 x86_64 Cygwin,执行方法一将允许用户使用cd /ccd c:。使用cd /仍然转到cygwin64目录。
马塞尔·威尔逊

1

是的,安装应该可以。

mount -c /

如果您仍然有PATH提及的条目/cygdrive,那么您可能只需要重新启动即可。

另外,请参阅中是否有任何PATH设置。/etc/profile/cygdrive


您的意思是重启Cygwin,或者实际上重启整个计算机?
iconoclast 2012年

我认为您需要终止所有基于Cygwin的进程。最简单的方法是重新启动计算机。
Mikel

当我找到自己的问题的答案时,我通常会优先考虑其他人的答案,但是由于您的问题需要重新启动(或仿真),并且由于我的是cygwin文档中的答案,因此,我将继续讨论我的问题。
iconoclast

如果您的计算机没有重启就可以工作,那么一定可以!
Mikel

但是,如果我重新启动计算机,此更改就消失了。返回存储在fstab中的内容。
rustyx
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.