Wie entferne ich das Präfix / cygdrive von Cygwin in allen Pfaden?


36

Ich wechsle von der mit Git for Windows gelieferten Bash-Shell zu Cygwin und stoße auf ein seltsames Problem. Jemand hielt es für eine gute Idee, /cygdrive/alle Pfade zu ergänzen , während ich es für eine schrecklich hässliche Idee halte. Ich konnte feststellen, dass ich dies teilweise durch Hinzufügen beheben kann

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

in meinem .bashrc, aber wenn ich mir die PATH-Variable anschaue, ist immer noch / cygdrive / darin. Ich nehme an, ich könnte ein Skript schreiben, um den PATH zu reparieren, aber das ist noch klüger als das, was ich bereits mache. Es muss einen besseren Weg geben, und ich bin mir ziemlich sicher, dass es einen gibt, da Gits Bash-Shell (AFAIK) eine ältere Version von Cygwin verwendet und irgendwie so konfiguriert ist, dass sie nicht/cygdrive überall vorangestellt wird . Wie kann ich den "Suck" -Knopf auf Null stellen?

Gary Larson Comic

Antworten:


39

Beim Herumgucken in / etc ist ein Link aufgetaucht, den Googeln nicht hat. Es stellt sich heraus, dass Sie dies in der Datei steuern können /etc/fstab. Fügen Sie einfach eine Zeile hinzu, die besagt

none / cygdrive binary 0 0

und das Problem sollte behoben sein. Keine klugeren Korrekturen mehr in .bashrc und kein vermasselter $ PATH.


2
Ich habe diese Methode verwendet, und jetzt, wenn ich es versuche ls /, werden die Windows-Laufwerke nicht angezeigt. Nicht einmal bei der Verwendung ls -l /. Wird das erwartet? Kann es repariert werden? Dies ist, was ich in fstab habe:none / cygdrive binary,posix=0,user,acl 0 0
Tibi

Ich wusste nicht, dass es eine Möglichkeit gibt, die Windows-Laufwerke anzusteuern /. Hattest du das schon mal? (Oder bei /cygdrive/?) Ich habe immer nur damit gelebt, dass ich wissen muss, welche Windows-Laufwerke verfügbar sind, und ich benutze sie sowieso kaum.
Iconoclast

1
Ja, ls /cygdrivesollte die Windows-Laufwerke auflisten. Die Ausgabe für mich zum Beispiel ist c/ e/ f/. Beachten Sie, wie Laufwerke wie Ordner behandelt werden.
Kat

1
Das funktioniert nur zur Hälfte. Die beiden Reittiere (real /und cygdrive) sind irgendwie überlagert. Das heißt: Sie an den Antrieben erhalten können mit /c, usw. - aber sie sind nie als Teil aufgeführt /. Ich denke, der Real /verbirgt den Inhalt cygdrivebeim Auflisten. Ich frage mich, ob dies ein technisch undefiniertes Verhalten ist und möglicherweise etwas kaputt macht. Wie auch immer, da ich es vorziehen möchte, alles zu sehen, mit dem ich arbeite, entscheide ich mich /mnt.
Underscore_d

1
@Tibi Ich habe festgestellt, dass mkdir c (oder wie auch immer der Name Ihres Laufwerks lautet) den Einhängepunkt des Laufwerks für ls sichtbar macht, anstatt ihn mit einem leeren Verzeichnis zu überschreiben. Wer hätte das gedacht?
Barksdml

10

Methode eins

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

Methode zwei

echo - / cygdrive acl > /etc/fstab

Beispiel


vor und nach diesem /Vorgang (Methode 1) wurde auf das Stammverzeichnis von cygwin64 verwiesen und cd /cfunktionierte nicht. Um cd /cArbeit zu machen , musste ich tun mount c: /c.
MM

/chätte nie funktionieren sollen, meine Lösung schlug nie vor, dass
Steven Penny

2
Ich interpretiere "wie man / cygdrive in Pfaden loswird" als "wie man / c anstelle von / cygdrive / c arbeiten lässt" (und ähnlich für andere Buchstaben). Mein PFAD zeigt jetzt tatsächlich / c / bla anstelle von / cygdrive / c / bla
MM

1
Ab 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin erlaubt das Ausführen der ersten Methode dem Benutzer, cd /coder cd c:. Die Verwendung von cd /Still geht an das Verzeichnis cygwin64.
Marcel Wilson

1

Ja, mount sollte funktionieren.

mount -c /

Wenn Sie noch Einträge haben, auf PATHdie verwiesen wird, /cygdrivemüssen Sie wahrscheinlich nur einen Neustart durchführen.

Überprüfen Sie auch, ob PATHEinstellungen vorhanden sind , auf /etc/profiledie verwiesen wird /cygdrive.


Sie meinen, Cygwin neu zu starten oder den gesamten Computer neu zu starten?
Iconoclast

Ich denke, Sie müssen alle Cygwin-basierten Prozesse beenden . Der einfachste Weg, dies zu tun, besteht darin, den Computer neu zu starten.
Mikel

Normalerweise bevorzuge ich die Antworten anderer, wenn ich Antworten auf meine eigenen Fragen finde, aber da Ihre einen Neustart (oder eine Simulation davon) erfordern und meine in der Dokumentation von cygwin enthalten ist, gehe ich mit meiner.
Iconoclast

Wenn Sie ohne Neustart gearbeitet haben, dann auf jeden Fall!
Mikel

Aber wenn ich den Computer neu starte, ist diese Änderung weg. Zurück zu dem, was in fstab gespeichert ist.
Rustyx
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.