¿Cómo me deshago del prefijo Cygwin / cygdrive en todas las rutas?

36

Estoy cambiando a Cygwin desde el shell bash que se incluye con Git para Windows, y encuentro un problema extraño. Alguien pensó que sería una buena idea agregar /cygdrive/a todos los caminos, mientras que creo que es una idea horriblemente fea. He podido determinar que puedo solucionar esto parcialmente agregando

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

en mi .bashrc, pero si miro la variable PATH, todo sigue teniendo / cygdrive /. Supongo que podría escribir un script para arreglar la RUTA, pero eso es aún más difícil de lo que ya estoy haciendo. Tiene que haber una mejor manera, y estoy bastante seguro de que la hay desde que bash shell de Git usa (AFAIK) una versión anterior de Cygwin, y de alguna manera está configurada para no anteponerse en /cygdrivetodas partes. Entonces, ¿cómo puedo girar la perilla "Suck" a cero?

Cómic de Gary Larson

iconoclasta
fuente

Respuestas:

39

Buscando en / etc apareció un enlace que Google no. Resulta que puedes controlar esto en el archivo /etc/fstab. Solo agrega una línea que diga

none / cygdrive binary 0 0

y el problema debería ser solucionado. No más correcciones de kludgey en .bashrc, y no hay problemas en $ PATH.

iconoclasta
fuente
2
Usé este método, y ahora cuando trato de hacerlo ls /, las unidades de Windows no aparecen. Ni siquiera cuando se usa ls -l /. ¿Se espera esto? ¿Se puede arreglar? Esto es lo que tengo en fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi
No sabía que había una manera de obtener las unidades de Windows /. ¿Tenías eso antes? (¿O en /cygdrive/?) Siempre he vivido con el hecho de que tengo que saber qué unidades de Windows están disponibles, y casi nunca las uso de todos modos.
iconoclasta
1
Sí, ls /cygdrivedebería enumerar las unidades de Windows. La salida para mí, por ejemplo, es c/ e/ f/. Tenga en cuenta cómo las unidades se tratan como carpetas.
Kat
1
Esto solo funciona a medias. Las dos monturas (real /y cygdrive) están superpuestas. Es decir: puede acceder a las unidades utilizando /c, etc. , pero nunca figuran como parte de /. Creo que lo real /está ocultando el contenido de la cygdrivelista. Me pregunto si este es un comportamiento técnicamente indefinido y podría romper algo. De todos modos, como prefiero poder ver cualquier cosa con la que estoy trabajando, elijo /mnt.
underscore_d
1
@Tibi Descubrí que si haces cd en / y luego haces mkdir c (o el nombre de tu unidad), hará que ese punto de montaje de la unidad sea visible para ls, en lugar de sobrescribirlo con un directorio vacío. ¿Quien lo hubiera pensado?
barksdml
10

Método uno

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

Método dos

echo - / cygdrive acl > /etc/fstab

Ejemplo

Steven Penny
fuente
tanto antes como después de hacer esto (método 1), se /refirió al directorio raíz cygwin64 y cd /cno funcionó. Para hacer el cd /ctrabajo que tenía que hacer mount c: /c.
MM
/cnunca debería haber funcionado, mi solución nunca sugirió eso
Steven Penny
2
Interpreto "cómo deshacerse de / cygdrive en las rutas" que significa "cómo permitir que / c funcione en lugar de / cygdrive / c" (y de manera similar para otras letras). Mi RUTA ahora muestra / c / bla en lugar de / cygdrive / c / bla
MM
1
A partir de 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, hacer el método uno permitirá al usuario cd /co cd c:. El uso cd /todavía va al directorio cygwin64.
Marcel Wilson el
1

Sí, el montaje debería funcionar.

mount -c /

Si todavía tiene entradas a las PATHque se refiere /cygdrive, entonces probablemente solo necesite reiniciar.

Además, verifique si hay alguna PATHconfiguración a la /etc/profileque se refiera /cygdrive.

Mikel
fuente
¿Te refieres a reiniciar Cygwin o reiniciar toda la máquina?
iconoclasta
Creo que necesita terminar todos los procesos basados ​​en Cygwin. La forma más fácil de hacer esto es reiniciar la máquina.
Mikel
Normalmente prefiero las respuestas de otras personas cuando encuentro respuestas a mis propias preguntas, pero dado que la suya requiere un reinicio (o simulación de las mismas) y dado que la mía es la que se encuentra en la documentación de Cygwin, voy con la mía.
iconoclasta
Si el tuyo funcionó sin reiniciar, ¡entonces por supuesto!
Mikel
Pero si reinicio la máquina, este cambio desaparecerá. Volver a lo que está almacenado en fstab.
rustyx