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.
Quando si lavora tra i file system Windows e Linux, è necessario tenere presenti alcune considerazioni. In questa guida sono stati descritti alcuni esempi di supporto per l'interoperabilità per la combinazione di comandi basati su Windows e Linux.
Archiviazione e prestazioni dei file nei file system
Si consiglia di non lavorare con file attraverso diversi sistemi operativi, a meno che non ci sia un motivo specifico per farlo. Per una velocità di prestazioni più rapida, archiviare i file nel file system WSL se si lavora in una riga di comando Linux (Ubuntu, OpenSUSE e così via). Se stai lavorando in una riga di comando di Windows (PowerShell, prompt dei comandi), salva i file nel file system di Windows.
Ad esempio, quando archivi i file di progetto WSL:
- Usa la directory radice del file system Linux: /
- Non la directory radice del file system Windows:
/mnt/c/Users/<user name>/Project$
oC:\Users\<user name>\Project
Quando vedi /mnt/
nel percorso del file di una riga di comando WSL, significa che stai lavorando su un'unità montata. L'unità C:/ del file system di Windows (C:\Users\<user name>\Project
) sarà quindi simile alla seguente quando viene montata in una riga di comando WSL: /mnt/c/Users/<user name>/Project$
. È possibile archiviare i file di progetto in un'unità montata, ma la velocità delle prestazioni migliorerà se le archivia direttamente nell'unità \\wsl$
.
Visualizza la directory corrente in Esplora file di Windows
È possibile visualizzare la directory in cui sono archiviati i file aprendo Esplora file di Windows dalla riga di comando usando:
explorer.exe .
In alternativa, è anche possibile usare il comando: powershell.exe /c start .
Assicurarsi di aggiungere il punto alla fine del comando per aprire la directory corrente.
Per visualizzare tutte le distribuzioni Linux disponibili e i relativi file system radice in Esplora file di Windows, immettere nella barra degli indirizzi: \\wsl$
Sensibilità al maiuscolo/minuscolo di nomi file e 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. I file system di Windows e di Linux gestiscono la sensibilità alle maiuscole in modi diversi: Windows è insensibile alle maiuscole e Linux è sensibile alle maiuscole. Altre informazioni su come regolare la distinzione tra maiuscole e minuscole, in particolare quando si montano i dischi con WSL, vedere l'articolo Procedura per regolare la distinzione tra maiuscole e minuscole .
Interoperabilità tra i comandi di Windows e Linux
Gli strumenti e i comandi di Windows e Linux possono essere usati in modo intercambiabile con WSL.
- Eseguire gli strumenti di Windows (ad esempio notepad.exe) da una riga di comando linux (ad esempio. Ubuntu).
- Eseguire gli strumenti Linux (ad esempio grep) da una riga di comando di Windows (ad esempio. PowerShell).
- Condividere le variabili di ambiente tra Linux e Windows. (Build 17063+)
Eseguire strumenti Linux da una riga di comando di Windows
Eseguire file binari Linux dal prompt dei comandi di Windows (CMD) o PowerShell usando wsl <command>
(o wsl.exe <command>
).
Per esempio:
C:\temp> wsl ls -la
<- contents of C:\temp ->
I file binari richiamati in questo modo:
- Usare la stessa directory di lavoro del prompt corrente di CMD o PowerShell.
- Eseguire come utente predefinito di WSL.
- Disporre degli stessi diritti amministrativi di Windows del processo chiamante e del terminale.
Il comando Linux seguente wsl
(o wsl.exe
) viene gestito come qualsiasi comando eseguito in WSL. Elementi come sudo, piping e reindirizzamento dei file funzionano.
Esempio che usa sudo per aggiornare la distribuzione linux predefinita:
C:\temp> wsl sudo apt-get update
Il nome utente della distribuzione Linux predefinito verrà elencato dopo l'esecuzione di questo comando e verrà richiesta la password. Dopo aver immesso correttamente la password, la distribuzione scaricherà gli aggiornamenti.
Combinazione di comandi Linux e Windows
Ecco alcuni esempi di combinazione di comandi Linux e Windows con PowerShell.
Per usare il comando ls -la
Linux per elencare i file e il comando findstr
di PowerShell per filtrare i risultati per le parole contenenti "git", combinare i comandi:
wsl ls -la | findstr "git"
Per usare il comando dir
di PowerShell per elencare i file e il comando grep
Linux per filtrare i risultati per le parole contenenti "git", combinare i comandi:
C:\temp> dir | wsl grep git
Per usare il comando ls -la
Linux per elencare i file e il comando > out.txt
di PowerShell per stampare l'elenco in un file di testo denominato "out.txt", combinare i comandi:
C:\temp> wsl ls -la > out.txt
I comandi passati a wsl.exe
vengono inoltrati al processo WSL senza modifiche. I percorsi di file devono essere specificati nel formato WSL.
Per usare il comando ls -la
Linux per elencare i file nel percorso del /proc/cpuinfo
file system Linux, usando PowerShell:
C:\temp> wsl ls -la /proc/cpuinfo
Per usare il comando ls -la
Linux per elencare i file nel percorso del C:\Program Files
file system di Windows, usando PowerShell:
C:\temp> wsl ls -la "/mnt/c/Program Files"
Eseguire gli strumenti di Windows da Linux
WSL può eseguire gli strumenti di Windows direttamente dalla riga di comando di WSL usando [tool-name].exe
. Ad esempio: notepad.exe
.
Le applicazioni vengono eseguite in questo modo con le proprietà seguenti:
- Mantenere la directory di lavoro come punto di partenza per il prompt dei comandi WSL nella maggior parte dei casi, con eccezioni che verranno illustrate di seguito.
- Disporre degli stessi diritti di autorizzazione del processo WSL.
- Esegui come utente di Windows attivo.
- Viene visualizzato in Gestione attività di Windows come se fosse eseguito direttamente dal prompt cmd.
I file eseguibili di Windows eseguiti in WSL vengono gestiti in modo analogo ai file eseguibili Linux nativi, ovvero piping, reindirizzamenti e persino operazioni in background come previsto.
Per eseguire lo strumento ipconfig.exe
Windows, usare lo strumento grep
Linux per filtrare i risultati "IPv4" e usare lo strumento cut
Linux per rimuovere i campi della colonna da una distribuzione Linux (ad esempio Ubuntu) immettere:
ipconfig.exe | grep IPv4 | cut -d: -f2
Si proverà un esempio di combinazione dei comandi di Windows e Linux. Aprire la distribuzione linux (ad es. Ubuntu) e creare un file di testo: touch foo.txt
. Usare ora il comando ls -la
Linux per elencare i file diretti e i relativi dettagli di creazione, oltre allo strumento findstr.exe
Windows PowerShell per filtrare i risultati in modo che solo il foo.txt
file venga visualizzato nei risultati:
ls -la | findstr.exe foo.txt
Gli strumenti di Windows devono includere l'estensione del file, corrispondere al caso del file e essere eseguibili. File non eseguibili, inclusi gli script batch. I comandi nativi di CMD come dir
possono essere eseguiti con il comando cmd.exe /C
.
Ad esempio, elenca il contenuto della directory C:\ del file system di Windows, immettendo:
cmd.exe /C dir
In alternativa, usare il ping
comando per inviare una richiesta echo al sito Web di microsoft.com:
ping.exe www.microsoft.com
I parametri vengono passati al file binario di Windows non modificato. Ad esempio, il comando seguente verrà aperto C:\temp\foo.txt
in notepad.exe
:
notepad.exe "C:\temp\foo.txt"
Questo funzionerà anche:
notepad.exe C:\\temp\\foo.txt
Condividere le variabili di ambiente tra Windows e WSL con WSLENV
WSL e Windows condividono una variabile di ambiente speciale, WSLENV
, creata per collegare le distribuzioni di Windows e Linux in esecuzione in WSL.
Proprietà della WSLENV
variabile:
- È condiviso; esiste sia negli ambienti Windows che WSL.
- È un elenco di variabili di ambiente da condividere tra Windows e WSL.
- Può formattare le variabili di ambiente per funzionare correttamente in Windows e WSL.
- Può essere utile per il flusso tra WSL e Win32.
Annotazioni
Prima della versione 17063, solo la variabile di ambiente Windows a cui WSL poteva accedere era PATH
(in modo da poter avviare eseguibili Win32 da in WSL). A partire dal 17063, WSLENV
inizia a essere supportato.
WSLENV fa distinzione tra maiuscole e minuscole.
Flag WSLENV
Sono disponibili quattro flag in WSLENV
per influenzare la modalità di conversione della variabile di ambiente.
WSLENV
Bandiere:
-
/p
: converte il percorso tra percorsi di stile WSL/Linux e percorsi Win32. -
/l
- indica che la variabile di ambiente è un elenco di percorsi. -
/u
- indica che questa variabile di ambiente deve essere inclusa solo quando si esegue WSL da Win32. -
/w
- indica che questa variabile di ambiente deve essere inclusa solo quando si esegue Win32 da WSL.
I flag possono essere combinati in base alle esigenze.
Altre informazioni su WSLENV, incluse le domande frequenti e gli esempi di impostazione del valore di WSLENV su una concatenazione di altre variabili di ambiente predefinite, ognuna suffisso con uno slash seguito da flag per specificare come tradurre il valore e il passaggio delle variabili con uno script. Questo articolo include anche un esempio per la configurazione di un ambiente di sviluppo con il linguaggio di programmazione Go, configurato per condividere un GOPATH tra WSL e Win32.
Disabilitare l'interoperabilità
Gli utenti possono disabilitare la possibilità di eseguire gli strumenti di Windows per una singola sessione WSL eseguendo il comando seguente come radice:
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
Per riabilitare i file binari di Windows, chiudere tutte le sessioni WSL ed eseguire nuovamente bash.exe o eseguire il comando seguente come radice:
echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop
La disabilitazione dell'interoperabilità non verrà mantenuta tra le sessioni WSL. L'interoperabilità verrà abilitata di nuovo all'avvio di una nuova sessione.
Windows Subsystem for Linux