Interopérabilité Windows avec LinuxWindows interoperability with Linux
Le sous-système Windows pour Linux (WSL) améliore en permanence l’intégration entre Windows et Linux.The Windows Subsystem for Linux (WSL) is continuously improving integration between Windows and Linux. Vous pouvez :You can:
- Exécuter les outils Windows (p. ex. notepad.exe) à partir d’une ligne de commande Linux (p. ex. Ubuntu).Run Windows tools (ie. notepad.exe) from a Linux command line (ie. Ubuntu).
- Exécuter les outils Linux (p. ex. grep) à partir d’une ligne de commande Windows (p. ex. PowerShell).Run Linux tools (ie. grep) from a Windows command line (ie. PowerShell).
- Partager des variables d’environnement entre Linux et Windows.Share environment variables between Linux and Windows. (Build 17063+)(Build 17063+)
Notes
Si vous exécutez une version Creators Update (octobre 2017, build 16299) ou la mise à jour anniversaire (août 2016, build 14393), accédez aux versions antérieures de Windows 10.If you're running Creators Update (Oct 2017, Build 16299) or Anniversary Update (Aug 2016, Build 14393), jump to the Earlier versions of Windows 10.
Exécuter les outils Linux à partir d’une ligne de commande WindowsRun Linux tools from a Windows command line
Exécutez des fichiers binaires Linux à partir de l’invite de commandes Windows (CMD) ou de PowerShell en utilisant wsl <command>
(ou wsl.exe <command>
).Run Linux binaries from the Windows Command Prompt (CMD) or PowerShell using wsl <command>
(or wsl.exe <command>
).
Par exemple :For example:
C:\temp> wsl ls -la
<- contents of C:\temp ->
Les fichiers binaires appelés de cette façon :Binaries invoked in this way:
- Utilisent le même répertoire de travail que l’invite CMD ou PowerShell en cours.Use the same working directory as the current CMD or PowerShell prompt.
- Sont exécutés en tant qu’utilisateur par défaut WSL.Run as the WSL default user.
- Ont les mêmes droits d’administration Windows que le terminal et le processus appelant.Have the same Windows administrative rights as the calling process and terminal.
La commande Linux qui suit wsl
(ou wsl.exe
) est gérée comme n’importe quelle commande exécutée dans WSL.The Linux command following wsl
(or wsl.exe
) is handled like any command run in WSL. Des actions comme l’exécution de sudo, la création de canaux et la redirection de fichiers fonctionnent.Things such as sudo, piping, and file redirection work.
Exemple utilisant sudo pour mettre à jour votre distribution Linux par défaut :Example using sudo to update your default Linux distribution:
C:\temp> wsl sudo apt-get update
Votre nom d’utilisateur de distribution Linux par défaut sera listé après l’exécution de cette commande et vous serez invité à entrer votre mot de passe.Your default Linux distribution user name will be listed after running this command and you will be asked for your password. Une fois que vous avez entré correctement votre mot de passe, votre distribution télécharge les mises à jour.After entering your password correctly, your distribution will download updates.
Combinaison de commandes Linux et WindowsMixing Linux and Windows commands
Voici quelques exemples de combinaison de commandes Linux et Windows à l’aide de PowerShell.Here are a few examples of mixing Linux and Windows commands using PowerShell.
Pour utiliser la commande Linux ls -la
pour lister les fichiers et la commande PowerShell findstr
pour filtrer les résultats avec des mots contenant « git », combinez les commandes suivantes :To use the Linux command ls -la
to list files and the PowerShell command findstr
to filter the results for words containing "git", combine the commands:
wsl ls -la | findstr "git"
Pour utiliser la commande PowerShell dir
pour lister les fichiers et la commande Linux grep
pour filtrer les résultats avec des mots contenant « git », combinez les commandes suivantes :To use the PowerShell command dir
to list files and the Linux command grep
to filter the results for words containing "git", combine the commands:
C:\temp> dir | wsl grep git
Pour utiliser la commande Linux ls -la
pour lister les fichiers et la commande PowerShell > out.txt
pour imprimer cette liste dans un fichier texte nommé « out.txt », combinez les commandes suivantes :To use the Linux command ls -la
to list files and the PowerShell command > out.txt
to print that list to a text file named "out.txt", combine the commands:
C:\temp> wsl ls -la > out.txt
Les commandes passées à wsl.exe
sont transmises au processus WSL sans modification.The commands passed into wsl.exe
are forwarded to the WSL process without modification. Les chemins de fichiers doivent être spécifiés au format WSL.File paths must be specified in the WSL format.
Pour utiliser la commande Linux ls -la
pour lister les fichiers dans le chemin du système de fichiers Linux /proc/cpuinfo
, à l’aide de PowerShell :To use the Linux command ls -la
to list files in the /proc/cpuinfo
Linux file system path, using PowerShell:
C:\temp> wsl ls -la /proc/cpuinfo
Pour utiliser la commande Linux ls -la
pour lister les fichiers dans le chemin du système de fichiers Windows C:\Program Files
, à l’aide de PowerShell :To use the Linux command ls -la
to list files in the C:\Program Files
Windows file system path, using PowerShell:
C:\temp> wsl ls -la "/mnt/c/Program Files"
Exécuter des outils Windows à partir de LinuxRun Windows tools from Linux
WSL peut exécuter des outils Windows directement à partir de la ligne de commande WSL à l’aide de [tool-name].exe
.WSL can run Windows tools directly from the WSL command line using [tool-name].exe
. Par exemple, notepad.exe
.For example, notepad.exe
.
Les applications exécutées de cette manière ont les propriétés suivantes :Applications run this way have the following properties:
- Conservent le répertoire de travail en tant qu’invite de commandes WSL (en général, les exceptions sont décrites ci-dessous).Retain the working directory as the WSL command prompt (for the most part -- exceptions are explained below).
- Ont les mêmes autorisations que le processus WSL.Have the same permission rights as the WSL process.
- Sont exécutées en tant qu’utilisateur Windows actif.Run as the active Windows user.
- Apparaissent dans le Gestionnaire des tâches de Windows comme si elles étaient directement exécutées à partir de l’invite CMD.Appear in the Windows Task Manager as if directly executed from the CMD prompt.
Les exécutables Windows exécutés dans WSL sont gérés de la même façon que les exécutables Linux natifs : la création de canaux, les redirections et même le travail en arrière-plan fonctionnent comme prévu.Windows executables run in WSL are handled similarly to native Linux executables -- piping, redirects, and even backgrounding work as expected.
Pour exécuter l’outil Windows ipconfig.exe
, utiliser l’outil Linux grep
afin de filtrer les résultats « IPv4 », et utiliser l’outil Linux cut
afin de supprimer les champs de colonne, à partir d’une distribution Linux (par exemple, Ubuntu), entrez :To run the Windows tool ipconfig.exe
, use the Linux tool grep
to filter the "IPv4" results, and use the Linux tool cut
to remove the column fields, from a Linux distribution (for example, Ubuntu) enter:
ipconfig.exe | grep IPv4 | cut -d: -f2
Essayons un exemple combinant des commandes Windows et Linux.Let's try an example mixing Windows and Linux commands. Ouvrez votre distribution Linux (p. ex. Ubuntu) et créez un fichier texte : touch foo.txt
.Open your Linux distribution (ie. Ubuntu) and create a text file: touch foo.txt
. À présent, utilisez la commande Linux ls -la
pour lister les fichiers directs et les détails de leur création, ainsi que l’outil Windows PowerShell findstr.exe
pour filtrer les résultats afin que seul votre fichier foo.txt
s’affiche dans les résultats :Now use the Linux command ls -la
to list the direct files and their creation details, plus the Windows PowerShell tool findstr.exe
to filter the results so only your foo.txt
file shows in the results:
ls -la | findstr.exe foo.txt
Les outils Windows doivent inclure l’extension de fichier, correspondre à la casse de fichier et être exécutables.Windows tools must include the file extension, match the file case, and be executable. Les fichiers non exécutables, dont les scripts de commandes etNon-executables including batch scripts. les commandes natives CMD comme dir
, peuvent être exécutés avec la commande cmd.exe /C
.CMD native commands like dir
can be run with cmd.exe /C
command.
Par exemple, listez le contenu du répertoire C:\ de votre système de fichiers Windows, en entrant :For example, list the contents of your Windows files system C:\ directory, by entering:
cmd.exe /C dir
Ou utilisez la commande ping
pour envoyer une demande d’écho au site web microsoft.com :Or use the ping
command to send an echo request to the microsoft.com website:
ping.exe www.microsoft.com
Les paramètres sont passés au fichier binaire Windows non modifié.Parameters are passed to the Windows binary unmodified. Par exemple, la commande suivante ouvre C:\temp\foo.txt
dans notepad.exe
:As an example, the following command will open C:\temp\foo.txt
in notepad.exe
:
notepad.exe "C:\temp\foo.txt"
Cela fonctionne également :This will also work:
notepad.exe C:\\temp\\foo.txt
Partager des variables d’environnement entre Windows et WSLShare environment variables between Windows and WSL
WSL et Windows partagent une variable d’environnement spéciale, WSLENV
, créée pour relier les distributions Windows et Linux s’exécutant sur WSL.WSL and Windows share a special environment variable, WSLENV
, created to bridge Windows and Linux distributions running on WSL.
Propriétés de la variable WSLENV
:Properties of WSLENV
variable:
- Elle est partagée et existe dans les environnements Windows et WSL.It is shared; it exists in both Windows and WSL environments.
- Il s’agit d’une liste de variables d’environnement à partager entre Windows et WSL.It is a list of environment variables to share between Windows and WSL.
- Elle peut mettre en forme des variables d’environnement pour fonctionner correctement dans Windows et WSL.It can format environment variables to work well in Windows and WSL.
- Elle peut faciliter le flux entre WSL et Win32.It can assist in the flow between WSL and Win32.
Notes
Avant la build 17063, la seule variable d’environnement Windows à laquelle WSL pouvait accéder était PATH
(par conséquent, vous pouviez lancer des exécutables Win32 sous WSL).Prior to 17063, only Windows environment variable that WSL could access was PATH
(so you could launch Win32 executables from under WSL). Avec la build 17063, WSLENV
commence à être pris en charge.Starting in 17063, WSLENV
begins being supported.
WSLENV respecte la casse.WSLENV is case sensitive.
Indicateurs WSLENVWSLENV flags
Quatre indicateurs sont disponibles dans WSLENV
pour influencer la manière dont cette variable d’environnement est traduite.There are four flags available in WSLENV
to influence how the environment variable is translated.
Indicateurs WSLENV
:WSLENV
flags:
/p
: convertit le chemin entre les chemins de style WSL/Linux et les chemins Win32./p
- translates the path between WSL/Linux style paths and Win32 paths./l
: indique que la variable d’environnement est une liste de chemins./l
- indicates the environment variable is a list of paths./u
: indique que cette variable d’environnement doit être incluse uniquement lors de l’exécution de WSL à partir de Win32./u
- indicates that this environment variable should only be included when running WSL from Win32./w
: indique que cette variable d’environnement doit être incluse uniquement lors de l’exécution de Win32 à partir de WSL./w
- indicates that this environment variable should only be included when running Win32 from WSL.
Les indicateurs peuvent être combinés en fonction des besoins.Flags can be combined as needed.
Pour en savoir plus sur WSLENV, consultez ce blog. Vous y trouverez notamment des questions fréquentes et des exemples pour définir la valeur de WSLENV avec une concaténation de variables d’environnement prédéfinies, chaque variable ayant pour suffixe une barre oblique suivie d’indicateurs pour spécifier comment la valeur doit être traduite. Vous apprendrez également à passer des variables avec un script.Read more about WSLENV, including FAQs and examples of setting the value of WSLENV to a concatenation of other pre-defined environment vars, each suffixed with a slash followed by flags to specify how the value should be translated and passing variables with a script. Cet article contient aussi un exemple montrant comment configurer un environnement de développement avec le langage de programmation Go pour partager un GOPATH entre WSL et Win32.This article also includes an example for setting up a dev environment with the Go programming language, configured to share a GOPATH between WSL and Win32.
Désactiver l’interopérabilitéDisable interoperability
Les utilisateurs peuvent désactiver la possibilité d’exécuter des outils Windows pour une session WSL individuelle en exécutant la commande suivante en tant que racine :Users may disable the ability to run Windows tools for a single WSL session by running the following command as root:
echo 0 > /proc/sys/fs/binfmt_misc/WSLInterop
Pour réactiver les fichiers binaires Windows, fermez toutes les sessions WSL et réexécutez bash.exe, ou exécutez la commande suivante en tant que racine :To re-enable Windows binaries, exit all WSL sessions and re-run bash.exe or run the following command as root:
echo 1 > /proc/sys/fs/binfmt_misc/WSLInterop
La désactivation de l’interopérabilité n’est pas conservée entre les sessions WSL : l’interopérabilité sera réactivée lors du lancement d’une nouvelle session.Disabling interop will not persist between WSL sessions -- interop will be enabled again when a new session is launched.
Versions antérieures de Windows 10Earlier versions of Windows 10
Il existe plusieurs différences pour les commandes d’interopérabilité sur les versions antérieures de Windows 10.There are several differences for the interoperability commands on earlier Windows 10 versions. Si vous exécutez une version Creators Update (octobre 2017, build 16299) ou la mise à jour anniversaire (août 2016, build 14393) de Windows 10, nous vous recommandons d’effectuer une mise à jour vers la dernière version de Windows. Toutefois, si cela n’est pas possible, nous décrivons certaines différences d’interopérabilité ci-dessous.If you're running a Creators Update (Oct 2017, Build 16299), or Anniversary Update (Aug 2016, Build 14393) version of Windows 10, we recommend you update to the latest Windows version, but if that's not possible, we have outlined some of the interop differences below.
Résumé :Summary:
bash.exe
a été remplacé parwsl.exe
.bash.exe
has been replaced withwsl.exe
.- L’option
-c
permettant d’exécuter une seule commande n’est pas nécessaire avecwsl.exe
.-c
option for running a single command isn't needed withwsl.exe
. - Le chemin Windows est inclus dans la variable WSL
$PATH
.Windows path is included in the WSL$PATH
. - Le processus de désactivation de l’interopérabilité est inchangé.The process for disabling interop is unchanged.
Les commandes Linux peuvent être exécutées à partir de l’invite de commandes Windows ou de PowerShell, mais pour les versions antérieures de Windows, vous pouvez être amené à utiliser la commande bash
.Linux commands can be run from the Windows Command Prompt or from PowerShell, but for early Windows versions, you man need to use the bash
command. Par exemple :For example:
C:\temp> bash -c "ls -la"
Des actions comme les entrées, la création de canaux et la redirection de fichiers fonctionnent comme prévu.Things such as input, piping, and file redirection work as expected.
Les commandes WSL passées à bash -c
sont transmises au processus WSL sans modification.The WSL commands passed into bash -c
are forwarded to the WSL process without modification. Les chemins de fichiers doivent être spécifiés au format WSL et des précautions doivent être prises pour placer les caractères appropriés dans une séquence d’échappement.File paths must be specified in the WSL format and care must be taken to escape relevant characters. Exemple :Example:
C:\temp> bash -c "ls -la /proc/cpuinfo"
Ou ...Or...
C:\temp> bash -c "ls -la \"/mnt/c/Program Files\""
Lorsque vous appelez un outil Windows à partir d’une distribution WSL dans une version antérieure de Windows 10, vous devez spécifier le chemin du répertoire.When calling a Windows tool from a WSL distribution in an earlier version of Windows 10, you will need to specify the directory path. Par exemple, à partir de votre ligne de commande WSL, entrez :For example, from your WSL command line, enter:
/mnt/c/Windows/System32/notepad.exe
Dans WSL, ces exécutables sont gérés de la même façon que les exécutables Linux natifs.In WSL, these executables are handled similar to native Linux executables. Cela signifie que l’ajout de répertoires au chemin Linux et la création de canaux entre les commandes fonctionnent comme prévu.This means adding directories to the Linux path and piping between commands works as expected. Par exemple :For example:
export PATH=$PATH:/mnt/c/Windows/System32
OuOr
ipconfig.exe | grep IPv4 | cut -d: -f2
Le fichier binaire Windows doit inclure l’extension de fichier, correspondre à la casse de fichier et être exécutable.The Windows binary must include the file extension, match the file case, and be executable. Les fichiers non exécutables, dont les scripts de commandes et une commande comme dir
, peuvent être exécutés avec la commande /mnt/c/Windows/System32/cmd.exe /C
.Non-executables including batch scripts and command like dir
can be run with /mnt/c/Windows/System32/cmd.exe /C
command. Par exemple :For example:
/mnt/c/Windows/System32/cmd.exe /C dir