Come posso eliminare il prefisso / cygdrive di Cygwin in tutti i percorsi?


36

Sto passando a Cygwin dalla shell bash fornita con Git per Windows e sto riscontrando uno strano problema. Qualcuno ha pensato che sarebbe stata una buona idea aggiungere /cygdrive/a tutti i percorsi, mentre io penso che sia un'idea orribilmente brutta. Sono stato in grado di determinare che posso parzialmente risolvere questo aggiungendo

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

nel mio .bashrc, ma se do un'occhiata alla variabile PATH, tutto ha ancora / cygdrive / in esso. Suppongo che potrei scrivere una sceneggiatura per correggere il PERCORSO, ma è ancora più complicato di quello che sto già facendo. Deve esserci un modo migliore, e sono abbastanza fiducioso che esiste dal momento che la shell bash di Git utilizza (AFAIK) una versione precedente di Cygwin, ed è in qualche modo configurata per non anteporre /cygdriveovunque. Quindi, come posso portare la manopola "Suck" su zero?

Fumetto di Gary Larson

Risposte:


39

Sfogliando / etc si è scoperto un link che Google non ha fatto. Si scopre che puoi controllarlo nel file /etc/fstab. Basta aggiungere una riga che dice

none / cygdrive binary 0 0

e il problema dovrebbe essere risolto. Niente più correzioni di kludgey in .bashrc e nessun $ PATH incasinato.


2
Ho usato questo metodo e ora quando provo a farlo ls /, le unità di Windows non vengono visualizzate. Nemmeno quando si usa ls -l /. È previsto? Può essere riparato? Questo è quello che ho in fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi

Non sapevo che ci fosse un modo per ottenere le unità Windows /. L'hai avuto prima? (O a /cygdrive/?) Ho sempre vissuto con il fatto che devo sapere quali unità Windows sono disponibili e non le uso quasi mai.
iconoclasta,

1
Sì, ls /cygdrivedovrebbe elencare le unità Windows. L'output per me, ad esempio, è c/ e/ f/. Nota come le unità vengono trattate come cartelle.
Kat,

1
Questa solo metà funziona. I due supporti (reale /e cygdrive) sono sovrapposti. Cioè: è possibile accedere alle unità utilizzando /c, ecc. , Ma non sono mai elencati come parte di /. Penso che il vero /stia nascondendo il contenuto di cygdrivequando si elenca. Mi chiedo se si tratti di un comportamento tecnicamente indefinito e possa concepibilmente rompere qualcosa. Comunque, dato che preferisco poter vedere qualsiasi cosa con cui sto lavorando, sto scegliendo /mnt.
underscore_d

1
@Tibi Ho scoperto che se fai cd su / e poi fai mkdir c (o qualunque sia il nome del tuo disco), renderà quel punto di montaggio del disco visibile a ls, invece di sovrascriverlo con una directory vuota. Chi l'avrebbe mai detto?
barksdml,

10

Metodo uno

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

Metodo due

echo - / cygdrive acl > /etc/fstab

Esempio


sia prima che dopo averlo fatto (metodo 1), /riferito alla directory root cygwin64, e cd /cnon ha funzionato. Per fare il cd /clavoro dovevo fare mount c: /c.
MM

/cnon avrei mai dovuto funzionare, la mia soluzione non lo ha mai suggerito
Steven Penny

2
Interpreto "come sbarazzarsi di / cygdrive nei percorsi" per indicare "come consentire a / c di funzionare invece di / cygdrive / c" (e similmente per altre lettere). Il mio PERCORSO ora mostra effettivamente / c / bla invece di / cygdrive / c / bla
MM

1
A partire da 2.9.0 (0.318 / 5/3) 2017-09-12 10:18 x86_64 Cygwin, il metodo uno consentirà all'utente di cd /co cd c:. L'uso cd /va ancora nella directory cygwin64.
Marcel Wilson,

1

Sì, mount dovrebbe funzionare.

mount -c /

Se hai ancora voci in PATH cui fare riferimento /cygdrive, probabilmente dovrai solo riavviare.

Inoltre, controlla se ci sono delle PATHimpostazioni a /etc/profilecui fare riferimento /cygdrive.


Intendi riavviare Cygwin o riavviare effettivamente l'intero computer?
iconoclasta

Penso che sia necessario terminare tutti i processi basati su Cygwin. Il modo più semplice per farlo è riavviare il computer.
Mikel,

Normalmente preferisco le risposte degli altri quando trovo le risposte alle mie domande, ma poiché le tue richiedono un riavvio (o simulazione delle stesse) e poiché la mia è quella trovata nella documentazione di Cygwin, vado con la mia.
iconoclasta

Se il tuo ha funzionato senza riavvio, allora sicuramente!
Mikel,

Ma se riavvio la macchina, questa modifica è scomparsa. Torna a ciò che è memorizzato in fstab.
Rustyx,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.