Dans la mise à jour Windows 10 Creators (build 1703, avril 2017), ceci est pris en charge de manière native. Vous pouvez donc maintenant exécuter des binaires Windows à partir de Linux...
notepad.exe
ou tout autre .exe
(l'extension est nécessaire et elle doit être sur votre chemin, certaines versions plus anciennes ont besoin du chemin complet)
...et vice versa en utilisant l'une des méthodes suivantes :
bash.exe -c command_to_run
c'est-à-dire :bash.exe -c ls
bash -c command_to_run
c'est-à-dire :bash -c ls
wsl command_to_run
c'est-à-dire :wsl "ls"
; ou spécifiez la distribution que vous souhaitez utiliser pour l'exécuter en utilisant :ubuntu run ls
Pour plus d'informations, consultez l'article lié ci-dessus.
pourquoi ne pas simplement utiliser
$ powershell.exe Start filename
Start
est l'équivalent Windows de xdg-open
sur la plupart des Linux ou open
sur macOS, ce qui signifie "ouvrir avec l'application de bureau par défaut". J'aime l'alias pour l'ouvrir.
Solution native
La solution officielle fournie avec la mise à jour Windows 10 Insider Preview (14951) est basé sur le binfmt_msc presque oublié Facilité Linux pour lancer des binaires. La commande d'enregistrement pour binfmt_misc serait comme ça (où /init
est le binfmt_misc provisoire "interpréteur" pour les win-executables) :
sudo echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register
Et puis win-executable serait lancé comme des programmes normaux :
$ export PATH=$PATH:/mnt/c/Windows/System32
$ notepad.exe
$ ipconfig.exe | grep IPv4 | cut -d: -f2
$ ls -la | findstr.exe foo.txt
$ cmd.exe /c dir
Non pas que tout exécutable win doive résider dans les fenêtres (DrvFs ) système de fichiers - pas sur le système de fichiers de Linux (VolFs ) - afin d'hériter d'un Windows approprié répertoire_de_travail.
Le cbwin alternative
Jusqu'à ce que vous obteniez la dernière version, le projet cbwin propose une solution de contournement, en installant 3 nouvelles commandes linux dans WSL :
wcmd
:appelle un exécutable win viacmd.exe
.wrun
:appelle un exécutable win de façon synchrone avecCreateProcess
, et attendez de mourir (sans utilisercmd.exe
).wstart
:lancer une commande détachée (asynchrone) (avec l'utilisation decmd.exe
).
Pour les utiliser, vous devez :
- Installer cbwin :
- un nouveau
outbash.exe
sera installé dans votre système de fichiers Windows habituel (quelque part dans votre%PATH%
), plus - les 3 commandes linux du système de fichiers WSL.
- un nouveau
- Utilisez ce
outbash.exe
(où que vous l'ayez installé) pour démarrer WSL, PASC:\Windows\System32\bash.exe
! - Préfixez tous les exécutables win avec l'une de ces commandes, par ex.
wrun notepad
.
Astuce : Si l'exécutable lancé avec wcmd
ou wrun
génère des enfants, ceux-ci ne survivent que tant que l'exécutable reste en vie.
En d'autres termes, essayer de démarrer notepad.exe
avec wcmd
ne fonctionnera pas, car le bloc-notes sera tué juste après avoir été lancé -- Utilisez wrun
(synchrone) ou wstart
(asynchrone) dans ce cas.