Bagaimana cara saya menyingkirkan awalan Cygwin / cygdrive di semua jalur?

36

Saya beralih ke Cygwin dari bash shell yang dikirimkan bersama Git untuk Windows, dan menghadapi masalah aneh. Seseorang berpikir itu akan menjadi ide yang bagus untuk ditambahkan /cygdrive/ke semua jalan, sementara saya pikir itu ide yang sangat jelek. Saya sudah dapat menentukan bahwa saya dapat memperbaiki sebagian ini dengan menambahkan

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

di .bashrc saya, tetapi jika saya melihat variabel PATH, semuanya masih memiliki / cygdrive / di dalamnya. Saya kira saya bisa menulis naskah untuk memperbaiki PATH tetapi itu bahkan lebih kludgey daripada apa yang sudah saya lakukan. Pasti ada cara yang lebih baik, dan saya cukup yakin ada sejak bash shell Git menggunakan (AFAIK) versi Cygwin yang lebih lama, dan entah bagaimana itu dikonfigurasikan untuk tidak bertukar di /cygdrivemana-mana. Jadi, bagaimana saya bisa memutar kenop "Sedot" ke nol?

Komik Gary Larson

iconoclast
sumber

Jawaban:

39

Melihat-lihat di / etc muncul tautan yang tidak Googling. Ternyata Anda dapat mengontrol ini di file /etc/fstab. Cukup tambahkan baris yang mengatakan

none / cygdrive binary 0 0

dan masalahnya harus diperbaiki. Tidak ada lagi perbaikan kludgey di .bashrc, dan tidak ada $ PATH yang kacau.

iconoclast
sumber
2
Saya menggunakan metode ini, dan sekarang ketika saya mencoba melakukannya ls /, drive windows tidak muncul. Bahkan saat menggunakan ls -l /. Apakah ini yang diharapkan? Bisakah itu diperbaiki? Inilah yang saya miliki di fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi
Saya tidak tahu ada cara untuk mendapatkan drive windows /. Apakah Anda pernah memilikinya sebelumnya? (Atau /cygdrive/?) Saya selalu hidup dengan fakta bahwa saya harus tahu drive Windows mana yang tersedia, dan saya jarang menggunakannya.
iconoclast
1
Ya, ls /cygdriveharus mencantumkan drive Windows. Output untuk saya, misalnya, adalah c/ e/ f/. Perhatikan bagaimana drive diperlakukan seperti folder.
Kat
1
Ini hanya setengah bekerja. Dua mount (nyata /dan cygdrive) semacam overlay. Yaitu: Anda dapat menggunakan drive /c, dll. - tetapi drive tidak pernah terdaftar sebagai bagian dari /. Saya pikir yang sebenarnya /menyembunyikan konten cygdrivesaat mendaftar. Saya bertanya-tanya apakah ini perilaku yang secara teknis tidak terdefinisi dan mungkin dapat merusak sesuatu. Ngomong-ngomong, karena saya lebih suka melihat apa pun yang sedang saya kerjakan, saya memilih /mnt.
underscore_d
1
@ Tibi saya menemukan bahwa jika Anda cd ke / dan kemudian melakukan mkdir c (atau apa pun nama drive Anda), itu akan membuat titik mount drive itu terlihat oleh ls, alih-alih menimpa dengan direktori kosong. Siapa sangka?
barksdml
10

Metode satu

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

Metode dua

echo - / cygdrive acl > /etc/fstab

Contoh

Steven Penny
sumber
baik sebelum dan sesudah melakukan ini (metode 1), /merujuk ke direktori root cygwin64, dan cd /ctidak berfungsi. Untuk membuat cd /cpekerjaan saya harus lakukan mount c: /c.
MM
/cseharusnya tidak pernah berhasil, solusi saya tidak pernah menyarankan itu
Steven Penny
2
Saya menafsirkan "bagaimana cara menyingkirkan / cygdrive di jalur" berarti "bagaimana mengizinkan / c untuk bekerja, bukan / cygdrive / c" (dan juga untuk huruf lainnya). PATH saya sekarang memang menunjukkan / c / bla bukan / cygdrive / c / bla
MM
1
Pada 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, melakukan metode yang memungkinkan pengguna untuk cd /catau cd c:. Menggunakan cd /masih pergi ke dir cygwin64.
Marcel Wilson
1

Ya, mount harus bekerja.

mount -c /

Jika Anda masih memiliki entri PATHyang merujuk /cygdrive, maka Anda mungkin hanya perlu mem-boot ulang.

Juga, periksa apakah ada PATHpengaturan /etc/profileyang merujuk /cygdrive.

Mikel
sumber
Maksud Anda me-restart Cygwin, atau benar-benar me-reboot seluruh mesin?
iconoclast
Saya pikir Anda perlu menghentikan semua proses berbasis Cygwin. Cara termudah untuk melakukan ini adalah dengan me-reboot mesin.
Mikel
Saya biasanya memberikan preferensi pada jawaban orang lain ketika saya menemukan jawaban atas pertanyaan saya sendiri, tetapi karena pertanyaan Anda memerlukan reboot (atau simulasi daripadanya) dan karena milik saya adalah yang ditemukan dalam dokumentasi cygwin, saya akan menjawab pertanyaan saya.
iconoclast
Jika Anda berhasil tanpa reboot, berarti!
Mikel
Tetapi jika saya reboot mesin, perubahan ini hilang. Kembali ke apa yang disimpan di fstab.
rustyx