Comment me débarrasser du préfixe Cygwin / cygdrive dans tous les chemins?

36

Je passe à Cygwin à partir du shell bash fourni avec Git pour Windows et rencontre un problème étrange. Quelqu'un a pensé que ce serait une bonne idée d'ajouter /cygdrive/à tous les chemins, alors que je pense que c'est une idée horriblement laide. J'ai pu déterminer que je pouvais résoudre partiellement ce problème en ajoutant

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

dans mon .bashrc, mais si je regarde la variable PATH, tout contient toujours / cygdrive /. Je suppose que je pourrais écrire un script pour réparer le PATH mais c'est encore plus compliqué que ce que je fais déjà. Il doit y avoir un meilleur moyen, et je suis assez confiant que depuis que le shell bash de Git utilise (autant que je sache), une version plus ancienne de Cygwin, et il est en quelque sorte configuré pour ne pas s'afficher /cygdrivepartout. Alors, comment puis-je régler le bouton "Suck" à zéro?

Gary Larson comique

iconoclaste
la source

Réponses:

39

Rechercher dans / etc a créé un lien que Google n'a pas fait. Il s'avère que vous pouvez contrôler cela dans le fichier /etc/fstab. Il suffit d'ajouter une ligne qui dit

none / cygdrive binary 0 0

et le problème devrait être résolu. Plus de corrections de kludgey dans .bashrc, et pas de $ PATH foiré.

iconoclaste
la source
2
J'ai utilisé cette méthode et maintenant, lorsque j'essaie de le faire ls /, les lecteurs Windows n'apparaissent pas. Pas même en utilisant ls -l /. Est-ce attendu? Peut-il être réparé? Voici ce que j'ai dans fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi
Je ne savais pas qu'il y avait un moyen d'obtenir les lecteurs de Windows à /. Aviez-vous cela avant? (Ou at /cygdrive/?) J'ai toujours vécu avec le fait que je dois savoir quels disques Windows sont disponibles et je ne les utilise presque jamais de toute façon.
iconoclast
1
Oui, ls /cygdrivedevrait lister les lecteurs Windows. La sortie pour moi, par exemple, est c/ e/ f/. Notez que les lecteurs sont traités comme des dossiers.
Kat
1
Cela ne fonctionne qu'à moitié. Les deux supports (réel /et cygdrive) sont en quelque sorte superposés. Autrement dit, vous pouvez accéder aux lecteurs à l'aide de /c, etc. - mais ils ne sont jamais répertoriés comme faisant partie de /. Je pense que le réel /cache le contenu de la cygdriveliste. Je me demande s’il s’agit d’un comportement non défini sur le plan technique et qui pourrait éventuellement casser quelque chose. Quoi qu'il en soit, comme je préfère voir tout ce avec quoi je travaille, je choisis /mnt.
underscore_d
1
@Tibi J'ai découvert que si vous vous connectez à / puis à mkdir c (ou quel que soit le nom de votre lecteur), le point de montage de ce lecteur sera visible par ls au lieu de l'écraser avec un répertoire vide. Qui aurait pensé?
barksdml
10

Méthode 1

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

Méthode deux

echo - / cygdrive acl > /etc/fstab

Exemple

Steven Penny
la source
avant et après cette opération (méthode 1), faisant /référence au répertoire racine de cygwin64, et cd /cne fonctionnait pas. Pour faire un cd /ctravail, je devais faire mount c: /c.
MM
/cça n'aurait jamais dû marcher, ma solution n'a jamais suggéré cela.
Steven Penny
2
J'interprète "comment se débarrasser de / cygdrive dans les chemins" comme "comment permettre à / c de fonctionner à la place de / cygdrive / c" (et de même pour les autres lettres). My PATH affiche bien / c / bla à la place de / cygdrive / c / bla
MM
1
À partir de 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, la méthode 1 permet à l’utilisateur de cd /cou cd c:. Utiliser cd /va toujours au répertoire cygwin64.
Marcel Wilson
1

Oui, monter devrait fonctionner.

mount -c /

Si vous avez toujours des entrées dans PATHcette référence /cygdrive, il vous suffira probablement de redémarrer.

Vérifiez également s’il existe des PATHparamètres dans /etc/profilecette référence /cygdrive.

Mikel
la source
Vous voulez dire redémarrer Cygwin ou réellement redémarrer l’ensemble de la machine?
iconoclaste
Je pense que vous devez mettre fin à tous les processus basés sur Cygwin. La façon la plus simple de procéder consiste à redémarrer la machine.
Mikel
Normalement, je donne la préférence aux réponses des autres quand je trouve des réponses à mes propres questions, mais comme la vôtre nécessite un redémarrage (ou une simulation de celle-ci) et que le mien est celui qui se trouve dans la documentation de cygwin, je vais avec le mien.
iconoclaste
Si le vôtre a fonctionné sans redémarrage, alors bien sûr!
Mikel
Mais si je redémarre la machine, ce changement est parti. Retour à ce qui est stocké dans fstab.
Rustyx