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

ico*_*ast 40 cygwin path bashrc

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

mount --change-cygdrive-prefix /
export HOME=/c/Users/BZISAD0
Run Code Online (Sandbox Code Playgroud)

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

加里·拉森漫画

ico*_*ast 44

在 /etc中搜索找到了一个谷歌搜索没有的链接。事实证明,您可以在文件中控制它/etc/fstab。只需添加一行说

none / cygdrive binary 0 0
Run Code Online (Sandbox Code Playgroud)

问题应该得到解决。.bashrc 中不再有繁琐的修复,也没有混乱的 $PATH。

  • 我使用了这种方法,现在当我尝试执行`ls /`时,不会出现Windows驱动器。甚至在使用 `ls -l /` 时也不行。这是预期的吗?可以修复吗?这就是我在 fstab 中的内容:`none / cygdrive binary,posix=0,user,acl 0 0` (2认同)
  • 这只能起到一半的作用。两个安装座(真正的“/”和“cygdrive”)有点重叠。也就是说:您可以使用“/c”、_etc._ 访问驱动器 - 但它们永远不会作为“/”的一部分列出。我认为真正的“/”在列出时隐藏了“cygdrive”的内容。我想知道这在技术上是否是未定义的行为并且可能会破坏某些东西。不管怎样,因为我更喜欢能够看到我正在使用的任何东西,所以我选择“/mnt”。 (2认同)

Ste*_*nny 12

方法一

mount -c /
mount -m > /etc/fstab
Run Code Online (Sandbox Code Playgroud)

方法二

echo - / cygdrive acl > /etc/fstab
Run Code Online (Sandbox Code Playgroud)

例子

  • 我将“如何摆脱路径中的 /cygdrive”解释为“如何允许 /c 代替 /cygdrive/c 工作”(对于其他字母也类似)。我的 PATH 现在确实显示 /c/bla 而不是 /cygdrive/c/bla (2认同)
  • 从 2.9.0(0.318/5/3) 2017-09-12 10:18 x86_64 Cygwin 开始,执行方法一将允许用户使用 `cd /c` 或 `cd c:`。使用 `cd /` 仍然会转到 cygwin64 目录。 (2认同)