Как мне избавиться от префикса Cygwin / cygdrive во всех путях?


36

Я переключаюсь на Cygwin из оболочки bash, которая поставляется с Git для Windows, и сталкиваюсь со странной проблемой. Кто-то подумал, что было бы неплохо добавить /cygdrive/все пути, хотя я думаю, что это ужасно уродливая идея. Я смог определить, что могу частично это исправить, добавив

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

в моем .bashrc, но если я взгляну на переменную PATH, все по-прежнему имеет / cygdrive / в нем. Полагаю, я мог бы написать сценарий для исправления PATH, но это еще более хитро, чем то, что я уже делаю. Там должен быть лучше, и я довольно уверен , есть так Баш оболочки использует Git ( в AFAIK) старая версия Cygwin, и это каким - то образом настроен на не перед именем /cygdriveвезде. Итак, как я могу повернуть ручку «сосать» на ноль?

Гари Ларсон комикс

Ответы:


39

Перепрыгнув в / etc, мы обнаружили ссылку, которую не нашел Google . Оказывается, вы можете контролировать это в файле /etc/fstab. Просто добавьте строку, которая говорит

none / cygdrive binary 0 0

и проблема должна быть исправлена. Больше нет ошибок в .bashrc и нет проблем с $ PATH.


2
Я использовал этот метод, и теперь, когда я пытаюсь это сделать ls /, диски Windows не отображаются. Даже при использовании ls -l /. Это ожидается? Это можно исправить? Это то, что я имею в fstab:none / cygdrive binary,posix=0,user,acl 0 0
— Тиби

Я не знал, что есть способ получить диски Windows /. У вас было это раньше? (Или на /cygdrive/?) Я всегда просто жил с фактом, что мне нужно знать, какие диски Windows доступны, и я почти никогда не использую их в любом случае.
— иконоборчество

1
Да, ls /cygdriveследует перечислить диски Windows. Выход для меня, например, есть c/ e/ f/. Обратите внимание, как диски обрабатываются как папки.
— Kat

1
Это только половина работы. Два крепления (реальное /и cygdrive) как бы накладываются друг на друга. То есть: вы можете получить доступ к дискам, используя /cи т. Д. - но они никогда не перечислены как часть /. Я думаю, что настоящее /скрывает содержимое cygdriveсписка. Я задаюсь вопросом, является ли это технически неопределенным поведением и могло бы что-то сломать. В любом случае, поскольку я предпочитаю видеть все, с чем работаю, я выбираю /mnt.
— underscore_d

1
@Tibi Я обнаружил, что если вы перейдете в /, а затем выполните mkdir c (или каково бы ни было название вашего диска), это сделает эту точку монтирования диска видимой для ls, вместо того, чтобы перезаписывать ее пустой папкой. Кто бы мог подумать?
— barksdml

10

Способ первый

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

Способ второй

echo - / cygdrive acl > /etc/fstab

пример


как до, так и после этого (метод 1), /ссылался на корневой каталог cygwin64 и cd /cне работал. Чтобы сделать cd /cработу, я должен был сделать mount c: /c.
— ММ

/cникогда не должен был работать, мое решение никогда не предполагало, что
— Стивен Пенни

2
Я интерпретирую «как избавиться от / cygdrive в путях», чтобы означать «как разрешить / c работать вместо / cygdrive / c» (и аналогично для других букв). Мой PATH теперь действительно показывает / c / bla вместо / cygdrive / c / bla
— MM

1
По состоянию на 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, выполнение первого метода позволит пользователю cd /cили cd c:. Использование по- cd /прежнему идет в каталог cygwin64.
— Марсель Уилсон

1

Да, крепление должно работать.

mount -c /

Если у вас все еще есть записи, на PATHкоторые вы ссылаетесь /cygdrive, вам, вероятно, просто нужно перезагрузиться.

Кроме того, проверьте, есть ли какие-либо PATHнастройки в /etc/profileэтом отношении /cygdrive.


Ты имеешь в виду перезагрузить Cygwin или вообще перезагрузить всю машину?
— иконоборчество

Я думаю, что вам нужно прекратить все процессы на основе Cygwin. Самый простой способ сделать это - перезагрузить компьютер.
— Микель

Обычно я отдаю предпочтение ответам других людей, когда нахожу ответы на свои собственные вопросы, но поскольку ваш требует перезагрузки (или симуляции), а мой - тот, который содержится в документации cygwin, я ухожу с моим.
— иконоборчество

Если у вас работал без перезагрузки, то непременно!
— Микель

Но если я перезагружу машину, это изменение исчезнет. Вернуться к тому, что хранится в fstab.
— rustyx
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.