Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La sensibilità alle maiuscole determina se le lettere maiuscole (FOO.txt) e minuscole (foo.txt) vengono gestite come distinte (con distinzione tra maiuscole e minuscole) o equivalenti (senza distinzione tra maiuscole e minuscole) in un nome file o in una directory.
- Distinzione tra maiuscole e minuscole: FOO.txt ≠ foo.txt ≠ Foo.txt
- Senza distinzione di maiuscole: FOO.txt = foo.txt = Foo.txt
Differenze nella sensibilità al maiuscolo/minuscolo tra Windows e Linux
Quando si lavora con file e directory linux e Windows, potrebbe essere necessario modificare la modalità di gestione della distinzione tra maiuscole e minuscole.
Comportamento standard:
- Il file system di Windows considera i nomi di file e directory come senza distinzione tra maiuscole e minuscole. FOO.txt e foo.txt verranno considerati come file equivalenti.
- Il file system Linux fa distinzione tra maiuscole e minuscole nei nomi di file e directory. FOO.txt e foo.txt verranno considerati come file distinti.
Il file system di Windows supporta l'impostazione della distinzione tra maiuscole e minuscole con attributi di flag per directory. Anche se il comportamento standard deve essere senza distinzione tra maiuscole e minuscole, è possibile assegnare un flag di attributo per fare distinzione tra maiuscole e minuscole in modo che riconosca i file e le cartelle Linux che possono differire solo per maiuscole e minuscole.
Ciò può essere particolarmente vero quando si montano unità nel file system sottosistema Windows per Linux (WSL). Quando si lavora nel file system WSL, si esegue Linux, pertanto, per impostazione predefinita, i file e le directory sono gestiti con distinzione di maiuscole.
Nota
In passato, se si dispone di file il cui nome differisce solo per caso, questi file non sono stati accessibili da Windows, perché le applicazioni Windows considerano il file system senza distinzione tra maiuscole e minuscole e non possono distinguere tra i file i cui nomi differiscono solo nel caso. Mentre Esplora file di Windows mostrerà entrambi i file, ne verrà aperto solo uno indipendentemente dal tipo selezionato.
Modificare la sensibilità al maiuscolo di file e directory
I passaggi seguenti illustrano come modificare una directory nel file system di Windows in modo che diventi sensibile al maiuscolo/minuscolo e riconosca file e cartelle che differiscono solo per maiuscole e minuscole.
Avvertimento
Alcune applicazioni Windows, usando il presupposto che il file system non faccia distinzione tra maiuscole e minuscole, non usano il formato corretto per fare riferimento ai file. Ad esempio, non è raro che le applicazioni trasformino i nomi file in modo da usare tutte le lettere maiuscole o minuscole. Nelle directory contrassegnate come sensibili alle maiuscole, ciò significa che queste applicazioni non possono più accedere ai file. Inoltre, se le applicazioni Windows creano nuove directory in un albero di directory in cui si usano file con distinzione tra maiuscole e minuscole, queste directory non fanno distinzione tra maiuscole e minuscole. Ciò può rendere difficile lavorare con gli strumenti di Windows nelle directory con distinzione tra maiuscole e minuscole, quindi prestare attenzione quando si modificano le impostazioni di distinzione tra maiuscole e minuscole del file system di Windows.
Esaminare la sensibilità alle maiuscole e minuscole attuale
Per verificare se una directory fa distinzione tra maiuscole e minuscole nel file system di Windows, eseguire il comando :
fsutil.exe file queryCaseSensitiveInfo <path>
Sostituire <path>
con il percorso del file. Per una directory nel file system Windows (NTFS), il <path>
avrà un aspetto simile al seguente: C:\Users\user1\case-test
o se si è già presenti nella directory user1
, è sufficiente eseguire: fsutil.exe file setCaseSensitiveInfo case-test
Modificare la sensibilità alle maiuscole e minuscole
Il supporto per la distinzione tra maiuscole e minuscole nelle directory è stato introdotto in Windows 10, build 17107. In Windows 10, build 17692, il supporto è stato aggiornato per includere l'ispezione e la modifica del flag di distinzione tra maiuscole e minuscole per una directory dall'interno di WSL. La distinzione tra maiuscole e minuscole viene esposta usando un attributo esteso denominato system.wsl_case_sensitive
. Il valore di questo attributo sarà 0 per le directory senza distinzione tra maiuscole e minuscole e 1 per le directory con distinzione tra maiuscole e minuscole.
Per modificare la distinzione tra maiuscole e minuscole di una directory, è necessario eseguire autorizzazioni elevate (esegui come amministratore). La modifica del flag di distinzione tra maiuscole e minuscole richiede anche le autorizzazioni "Attributi di scrittura", "Crea file", "Crea cartelle" e "Elimina sottocartelle e file" nella directory. Vedere la sezione relativa alla risoluzione dei problemi per altre informazioni su questa.
Per modificare una directory nel file system di Windows in modo che sia sensibile alle maiuscole e minuscole (FOO ≠ foo), eseguire PowerShell come Amministratore e usare il comando:
fsutil.exe file setCaseSensitiveInfo <path> enable
Per modificare una directory nel file system di Windows con l'impostazione predefinita senza distinzione tra maiuscole e minuscole (FOO = foo), eseguire PowerShell come amministratore e usare il comando :
fsutil.exe file setCaseSensitiveInfo <path> disable
Una directory deve essere vuota per modificare l'attributo del flag di distinzione tra maiuscole e minuscole in tale directory. Non è possibile disabilitare il flag di distinzione tra maiuscole e minuscole in una directory contenente cartelle/file i cui nomi differiscono solo per caso.
Ereditarietà di distinzione tra maiuscole e minuscole
Quando si creano nuove directory, tali directory erediteranno la sensibilità rispetto alle maiuscole e minuscole dalla cartella madre.
Avvertimento
Quando si esegue in modalità WSL 1, si verifica un'eccezione a questo criterio di ereditarietà. Quando una distribuzione è in esecuzione in modalità WSL 1, il flag di distinzione tra maiuscole e minuscole per singola directory non viene ereditato; le directory create in una directory sensibile alla distinzione tra maiuscole e minuscole non sono automaticamente sensibili alla distinzione tra maiuscole e minuscole. È necessario contrassegnare esplicitamente ogni directory come sensibile alle maiuscole.
Opzioni di distinzione tra maiuscole e minuscole per il montaggio di un disco nel file di configurazione WSL
La distinzione tra maiuscole e minuscole può essere gestita durante il montaggio di un'unità nel sottosistema Windows per Linux usando il file di configurazione WSL. Ogni distribuzione Linux installata può avere il proprio file di configurazione WSL, denominato /etc/wsl.conf
. Per altre informazioni su come montare un'unità, vedere Introduzione al montaggio di un disco Linux in WSL 2.
Per configurare l'opzione di distinzione tra maiuscole e minuscole nel file wsl.conf
durante il montaggio di un'unità:
- Aprire la distribuzione linux che verrà usata (ad es. Ubuntu).
- Modificare le directory fino a visualizzare la cartella
etc
( potrebbe essere necessariocd ..
dalla directoryhome
). - Elencare i file nella directory
etc
per verificare se esiste già un filewsl.conf
(usare il comandols
oexplorer.exe .
per visualizzare la directory con Esplora file di Windows). - Se il file
wsl.conf
non esiste già, è possibile crearlo usando:sudo touch wsl.conf
o eseguendosudo nano /etc/wsl.conf
, che creerà il file al salvataggio dall'editor Nano. - Sono disponibili le opzioni seguenti per l'aggiunta al file
wsl.conf
:
impostazione predefinita: dir
per abilitare la distinzione tra maiuscole e minuscole per ogni directory.
[automount]
options = case = dir
Distinzione tra maiuscole e minuscole non disponibile (tutte le directory nelle unità NTFS montate non fanno distinzione tra maiuscole e minuscole): off
[automount]
options = case = off
Considera tutte le directory nell'unità (NTFS) come sensibili alla distinzione tra maiuscole e minuscole: force
[automount]
options = case = force
Questa opzione è supportata solo per il montaggio delle unità nelle distribuzioni Linux in esecuzione come WSL 1 e potrebbe richiedere una chiave di registrazione. Per aggiungere una chiave di registrazione, è possibile usare questo comando da un prompt dei comandi con privilegi elevati (amministratore): reg.exe add HKLM\SYSTEM\CurrentControlSet\Services\lxss /v DrvFsAllowForceCaseSensitivity /t REG_DWORD /d 1
.
È necessario riavviare WSL dopo aver apportato eventuali modifiche al file di wsl.conf
affinché tali modifiche siano effettive. È possibile riavviare WSL usando il comando : wsl --shutdown
Suggerimento
Per montare un'unità (che usa il plug-in file system DrvFs per rendere disponibile il disco in /mnt, ad esempio /mnt/c, /mnt/d e così via) con un'impostazione specifica di distinzione tra maiuscole e minuscole per TUTTE le unità, usare /etc/wsl.conf
come descritto in precedenza. Per impostare le opzioni di montaggio predefinite per un'unità specifica, usare il file /etc/fstab
per specificare queste opzioni.
Per altre opzioni di configurazione WSL, vedere Configurare le impostazioni di avvio per distro con wslconf.
Modifica della sensibilità al maiuscolo di un disco montato in una distribuzione WSL
Le unità in formato NTFS montate su una distribuzione WSL saranno case-insensitive per impostazione predefinita. Per modificare la distinzione tra maiuscole e minuscole per una directory in un'unità montata in una distribuzione WSL (ad esempio, Ubuntu), segui i passaggi indicati sopra per il file system Windows. Le unità EXT4 saranno, per impostazione predefinita, sensibili alle maiuscole e minuscole.
Per abilitare la distinzione tra maiuscole e minuscole in una directory (FOO ≠ foo), usare il comando :
fsutil.exe file setCaseSensitiveInfo <path> enable
Per disabilitare la distinzione tra maiuscole e minuscole in una directory e tornare all'impostazione predefinita senza distinzione tra maiuscole e minuscole (FOO = foo), usare il comando :
fsutil.exe file setCaseSensitiveInfo <path> disable
Nota
Se si modifica il flag di distinzione tra maiuscole e minuscole in una directory esistente per un'unità montata mentre WSL è in esecuzione, assicurarsi che WSL non abbia alcun riferimento a tale directory, altrimenti la modifica non avrà effetto. Ciò significa che la directory non deve essere aperta da alcun processo WSL, incluso l'uso della directory (o dei relativi discendenti) come directory di lavoro corrente.
Configurare la distinzione tra maiuscole e minuscole con Git
Il sistema di controllo della versione Git include anche un'impostazione di configurazione che può essere usata per regolare la distinzione tra maiuscole e minuscole per i file usati. Se si usa Git, è possibile modificare l'impostazione git config core.ignorecase
.
Per impostare Git con distinzione tra maiuscole e minuscole (FOO.txt ≠ foo.txt), immettere:
git config core.ignorecase false
Per impostare Git senza distinzione tra maiuscole e minuscole (FOO.txt = foo.txt), immettere:
git config core.ignorecase true
L'impostazione di questa opzione su false in un file system senza distinzione tra maiuscole e minuscole può causare errori confusi, falsi conflitti o file duplicati.
Per altre informazioni, vedere la documentazione di configurazione di Git .
Risoluzione dei problemi
La directory contiene file che presentano maiuscole e minuscole e richiedono distinzione tra maiuscole e minuscole, ma gli strumenti di Windows FS non riconosceranno questi file
Per usare gli strumenti del file system di Windows per lavorare in una directory Linux che contiene file con maiuscole e minuscole, è necessario creare una nuova directory e impostarla in modo da fare distinzione tra maiuscole e minuscole, quindi copiare i file in tale directory (usando git clone o untar). I file rimarranno in formato misto. Si noti che se si è già provato a spostare i file in una directory senza distinzione tra maiuscole e minuscole e si sono verificati conflitti, è probabile che alcuni file siano stati sovrascritti e non saranno più disponibili.
Errore: la directory non è vuota
Non è possibile modificare l'impostazione di distinzione tra maiuscole e minuscole in una directory che contiene altri file o directory. Provare a creare una nuova directory, modificare l'impostazione e quindi copiare in essa i tuoi file con lettere miste maiuscole e minuscole.
Errore: Accesso negato
Assicurati di avere le autorizzazioni "Attributi di scrittura", "Crea file", "Crea cartelle" e "Elimina sottocartelle e file" nella directory richiesta per modificare la sensibilità alle maiuscole. Per controllare queste impostazioni, aprire la directory in Esplora file di Windows (dalla riga di comando, usare il comando : explorer.exe .
). Fare clic con il pulsante destro del mouse sulla directory e selezionare Proprietà per aprire la finestra Proprietà documento, quindi selezionare Modifica per visualizzare o modificare le autorizzazioni per la directory.
Errore: per questa operazione è necessario un volume NTFS locale
L'attributo di distinzione tra maiuscole e minuscole può essere impostato solo nelle directory all'interno di un file system in formato NTFS. Le directory nel file system WSL (Linux) fanno distinzione tra maiuscole e minuscole per impostazione predefinita e non possono essere impostate senza distinzione tra maiuscole e minuscole usando lo strumento fsutil.exe.
Risorse aggiuntive
Windows Subsystem for Linux