Comment peut exécuter un exécutable Windows à partir de WSL (Ubuntu) Bash
Avec Windows 10 Anniversaire de la mise à jour pour l'été 2016, est venu de la possibilité d'exécuter ubuntu binaires à l'intérieur de la nouvelle Sous-système Windows pour Linux (WSL), un "léger" virtualisé sous-système.
Malheureusement, le lancement de C:\Windows\System32\bash.exe
, un autre bash
binaire ELF le démarrage d'un processus à l'intérieur de la WSL, d'où vous ne pouvez pas vous échapper! Vous pouvez vous lancer seul autre binaires ELF.
Alors, comment puis-je exécuter des *.exe
des fichiers à partir de Windows Bash?[1]
[1] Question posée aussi dans Microsoft est "officiel" GH soutien repo.
Vous devez vous connecter pour publier un commentaire.
Solution Native
La solution officielle fournie avec Windows 10 Initié Aperçu de la mise à Jour (14951) est basé sur la presque oublié binfmt_msc Linux installation pour le lancement de fichiers binaires. L'enregistrement de la commande pour la binfmt_misc serait comme ceci (où
/init
provisoire de l' binfmt_misc "interprète" pour la victoire-exécutables):Et puis win-exécutable serait lancé à l'instar des programmes:
La cbwin alternative
Jusqu'à ce que vous obtenez la dernière version, le projet cbwin propose une solution de contournement, par l'installation de 3 nouvelles commandes linux à l'intérieur de WSL:
wcmd
: appel une victoire exécutable parcmd.exe
.wrun
: appel une victoire exécutable de manière synchrone avecCreateProcess
, et attendre de mourir (et non à l'aide decmd.exe
).wstart
: le lancement d'une détaché (de manière asynchrone) de commande (avec l'utilisation decmd.exe
).Pour les utiliser, vous devez:
outbash.exe
sera installé dans votre système de fichiers Windows (quelque part dans votre%PATH%
), plusoutbash.exe
(là où vous l'avez installé) pour commencer à WSL, PASC:\Windows\System32\bash.exe
!wrun notepad
.Astuce: Si l'exécutable lancé avec
wcmd
ouwrun
engendre des enfants, ces survivre aussi longtemps que l'exécutable est toujours vivant.En d'autres termes, en essayant de démarrer
notepad.exe
avecwcmd
ne fonctionne pas, parce que le bloc-notes sera tué juste après avoir été lancé-Utilisationwrun
(de façon synchrone) ouwstart
(de manière asynchrone) dans ce cas.Dans le Windows 10 Créateurs De Mise À Jour (build 1703, avril 2017), c'est pris en charge nativement. Ainsi, vous pouvez maintenant exécuter des binaires pour Windows à partir de Linux...
...et vice versa:
Pour plus d'informations, voir l'article ci-dessus liés.
bash
àwsl
mais il semble quebash
fonctionne toujours, mais il peut être déconseillé.firefox.exe
) mais en tapant firefox.exe à l'invite bash résultats dansfirefox.exe: command not found
/mnt/c/Program Files/Mozilla\ Firefox/firefox.exe
nodepad.exe
Lors de l'exécution d'un
.exe
à partir de la ligne de commande de travaux, lors de l'exécution de PHP viaexec()
je ne pouvais pas obtenir que cela fonctionne. L'ajout de/init
, cependant , ne fonctionne pas. C'est mon travail/usr/local/bin/convert
fichier pour GraphicsMagick installé sur Windows: