Làm cách nào để thoát khỏi tiền tố Cygwin / cygdrive trong tất cả các đường dẫn?


36

Tôi đang chuyển sang Cygwin từ bash shell có Git cho Windows và gặp phải một vấn đề lạ. Ai đó nghĩ rằng nó sẽ là một ý tưởng tốt để thêm /cygdrive/vào tất cả các con đường, trong khi tôi nghĩ đó là một ý tưởng xấu khủng khiếp. Tôi đã có thể xác định rằng tôi có thể khắc phục một phần điều này bằng cách thêm

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

trong .bashrc của tôi, nhưng nếu tôi xem biến PATH, mọi thứ vẫn có / cygdrive / trong đó. Tôi cho rằng tôi có thể viết một kịch bản để sửa lỗi PATH nhưng điều đó thậm chí còn nhiều hơn so với những gì tôi đã làm. Phải có một cách tốt hơn và tôi khá tự tin là có bash shell của Git sử dụng (AFAIK) một phiên bản cũ hơn của Cygwin, và bằng cách nào đó nó được định cấu hình để không phải trả trước /cygdriveở mọi nơi. Vì vậy, làm thế nào tôi có thể biến núm "Suck" về 0?

Truyện tranh Gary Larson

Câu trả lời:


39

Cắt xén xung quanh trong / etc đã bật lên một liên kết mà Google không có. Hóa ra bạn có thể kiểm soát điều này trong tập tin /etc/fstab. Chỉ cần thêm một dòng nói

none / cygdrive binary 0 0

và vấn đề cần được khắc phục. Không còn sửa lỗi bùn trong .bashrc và không có $ PATH lộn xộn.


2
Tôi đã sử dụng phương pháp này và bây giờ khi tôi cố gắng thực hiện ls /, các ổ đĩa windows không xuất hiện. Ngay cả khi sử dụng ls -l /. Đây có phải là mong đợi? Nó có thể được sửa chữa? Đây là những gì tôi có trong fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi

Tôi không biết có một cách để lấy các ổ đĩa windows /. Bạn đã có điều đó trước? (Hoặc tại /cygdrive/?) Tôi luôn luôn sống với thực tế là tôi phải biết ổ đĩa Windows nào có sẵn và tôi hầu như không bao giờ sử dụng chúng.
iconoclast

1
Có, ls /cygdrivenên liệt kê các ổ đĩa Windows. Đầu ra cho tôi, ví dụ, là c/ e/ f/. Lưu ý cách các ổ đĩa được xử lý như các thư mục.
Kat

1
Điều này chỉ một nửa hoạt động. Hai gắn kết (thực /cygdrive) là loại chồng chéo. Đó là: bạn có thể lấy tại các ổ đĩa bằng cách sử dụng /c, v.v. - nhưng chúng không bao giờ được liệt kê như một phần của /. Tôi nghĩ rằng thực tế /là ẩn nội dung cygdrivekhi liệt kê. Tôi tự hỏi nếu đây là hành vi không xác định về mặt kỹ thuật và có thể hình dung phá vỡ một cái gì đó. Dù sao, vì tôi thích có thể nhìn thấy bất cứ điều gì tôi đang làm việc cùng, tôi đang chọn /mnt.
gạch dưới

1
@Tibi Tôi phát hiện ra rằng nếu bạn cd đến / và sau đó thực hiện mkdir c (hoặc bất kể tên ổ đĩa của bạn là gì), nó sẽ làm cho điểm gắn ổ đĩa đó hiển thị với ls, thay vì ghi đè lên nó bằng một thư mục trống. Ai có thể nghĩ?
barksdml

10

Phương pháp một

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

Phương pháp hai

echo - / cygdrive acl > /etc/fstab

Thí dụ


cả trước và sau khi làm điều này (phương pháp 1), /được tham chiếu đến thư mục gốc cygwin64 và cd /ckhông hoạt động. Để làm cd /cviệc tôi phải làm mount c: /c.
MM

/ckhông bao giờ nên làm việc, giải pháp của tôi không bao giờ đề xuất rằng
Steven Penny

2
Tôi hiểu "cách loại bỏ / cygdrive trong các đường dẫn" có nghĩa là "cách cho phép / c hoạt động thay vì / cygdrive / c" (và tương tự cho các chữ cái khác). Bây giờ PATH của tôi thực sự hiển thị / c / bla thay vì / cygdrive / c / bla
MM

1
Kể từ 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, thực hiện phương thức một sẽ cho phép người dùng cd /choặc cd c:. Sử dụng cd /vẫn đi đến thư mục cygwin64.
Marcel Wilson

1

Có, gắn kết nên làm việc.

mount -c /

Nếu bạn vẫn có các mục trong PATHđó đề cập đến /cygdrive, thì có lẽ bạn chỉ cần khởi động lại.

Ngoài ra, kiểm tra xem có bất kỳ PATHcài đặt nào trong /etc/profileđó đề cập đến /cygdrive.


Bạn có nghĩa là khởi động lại Cygwin, hoặc thực sự khởi động lại toàn bộ máy?
iconoclast

Tôi nghĩ bạn cần chấm dứt tất cả các quy trình dựa trên Cygwin. Cách dễ nhất để làm điều này là khởi động lại máy.
Mikel

Tôi thường ưu tiên cho câu trả lời của người khác khi tôi tìm thấy câu trả lời cho câu hỏi của riêng mình, nhưng vì câu hỏi của bạn yêu cầu khởi động lại (hoặc mô phỏng) và vì tôi là người tìm thấy trong tài liệu của cygwin, tôi sẽ đi cùng tôi.
iconoclast

Nếu bạn làm việc mà không cần khởi động lại, thì bằng mọi cách!
Mikel

Nhưng nếu tôi khởi động lại máy, sự thay đổi này sẽ biến mất. Quay lại với những gì được lưu trữ trong fstab.
rustyx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.