Jak pozbyć się prefiksu Cygwin / cygdrive na wszystkich ścieżkach?


36

Zmieniam się na Cygwin z powłoki bash dostarczanej z Git dla Windows i napotykam dziwny problem. Ktoś pomyślał, że dobrym pomysłem byłoby dodanie /cygdrive/do wszystkich ścieżek, podczas gdy myślę, że to okropnie brzydki pomysł. Udało mi się ustalić, że mogę to częściowo naprawić, dodając

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

w moim .bashrc, ale jeśli spojrzę na zmienną PATH, wszystko nadal ma / cygdrive /. Przypuszczam, że mógłbym napisać skrypt, aby naprawić ŚCIEŻKĘ, ale to jest jeszcze bardziej kludgey niż to, co już robię. Musi być lepszy sposób i jestem całkiem pewien, że tak jest, ponieważ powłoka bash Gita używa (AFAIK) starszej wersji Cygwina i jest w jakiś sposób skonfigurowana tak, aby nie/cygdrive wszędzie doklejać . Jak więc ustawić pokrętło „Suck” na zero?

Komiks Gary Larson

Odpowiedzi:


39

Po przeszukaniu w / etc pojawił się link, którego Googling nie zrobił. Okazuje się, że możesz to kontrolować w pliku /etc/fstab. Po prostu dodaj wiersz, który mówi

none / cygdrive binary 0 0

i problem powinien zostać rozwiązany. Nigdy więcej kludgey poprawek w .bashrc i nie popsutych $ PATH.


2
Użyłem tej metody, a teraz, gdy próbuję to zrobić ls /, dyski Windows nie pojawiają się. Nawet podczas używania ls -l /. Czy jest to oczekiwane? Czy można to naprawić? Oto co mam w fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi

Nie wiedziałem, że istnieje sposób na uzyskanie dysków Windows /. Czy miałeś to wcześniej? (Lub o /cygdrive/?) Zawsze po prostu żyłem z faktem, że muszę wiedzieć, które dyski z systemem Windows są dostępne i prawie nigdy z nich nie korzystam.
iconoclast

1
Tak, ls /cygdrivenależy wymienić dyski Windows. Na przykład dane wyjściowe to c/ e/ f/. Zwróć uwagę, jak dyski są traktowane jak foldery.
Kat

1
To tylko połowa działa. Dwa wierzchowce (prawdziwe /i cygdrive) są w pewnym sensie nakładane. To znaczy: można uzyskać na dyskach wykorzystujących /c, itd. - ale nigdy nie są one wymienione w części /. Wydaje mi się, że prawdziwy /ukrywa zawartość cygdrivelisty. Zastanawiam się, czy jest to zachowanie nieokreślone z technicznego punktu widzenia i może coś zepsuć. W każdym razie, ponieważ wolę widzieć wszystko, z czym pracuję, wybieram /mnt.
underscore_d

1
@ Tibi Odkryłem, że jeśli wykonasz cd do / a następnie wykonasz mkdir c (lub jakakolwiek jest nazwa twojego napędu), spowoduje to, że punkt podłączenia napędu będzie widoczny dla ls, zamiast nadpisywać go pustym katalogiem. Kto by pomyślał?
barksdml

10

Metoda pierwsza

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

Metoda druga

echo - / cygdrive acl > /etc/fstab

Przykład


zarówno przed, jak i po wykonaniu tej czynności (metoda 1), /odwoływał się do katalogu głównego cygwin64 i cd /cnie działał. Aby wykonać cd /cpracę musiałem wykonać mount c: /c.
MM

/cnigdy nie powinno działać, moje rozwiązanie nigdy tego nie sugerowało
Steven Penny

2
Interpretuję „jak pozbyć się / cygdrive na ścieżkach” w znaczeniu „jak zezwolić / c na działanie zamiast / cygdrive / c” (i podobnie w przypadku innych liter). Moja ŚCIEŻKA rzeczywiście pokazuje teraz / c / bla zamiast / cygdrive / c / bla
MM

1
Od 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, wykonanie pierwszej metody pozwoli użytkownikowi na cd /club cd c:. Używanie cd /nadal przechodzi do cygwin64 reż.
Marcel Wilson

1

Tak, mount powinien działać.

mount -c /

Jeśli nadal masz w PATHtym wpisy , zapoznaj się z/cygdrive , prawdopodobnie po prostu musisz zrestartować komputer.

Sprawdź także, czy są PATHw /etc/profiletym ustawieniu jakieś ustawienia /cygdrive.


Masz na myśli zrestartowanie Cygwin, czy zrestartowanie całej maszyny?
iconoclast

Myślę, że musisz zakończyć wszystkie procesy oparte na Cygwin. Najłatwiejszym sposobem na to jest ponowne uruchomienie komputera.
Mikel

Zwykle preferuję odpowiedzi innych ludzi, gdy znajduję odpowiedzi na moje własne pytania, ale ponieważ twoje wymaga ponownego uruchomienia (lub jego symulacji), a ponieważ moje jest tym, które znajduje się w dokumentacji cygwina, idę z moim.
iconoclast

Jeśli twoje działało bez restartu, to na pewno!
Mikel

Ale jeśli uruchomię ponownie komputer, ta zmiana zniknie. Powrót do tego, co jest przechowywane w fstab.
rustyx
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.