V aktualizaci Windows 10 Creators Update (sestavení 1703, duben 2017) je to nativně podporováno. Nyní tedy můžete spouštět binární soubory Windows z Linuxu...
notepad.exe
nebo jakýkoli jiný .exe
(rozšíření je potřeba a musí být na vaší cestě, některé starší verze potřebují celou cestu)
...a naopak pomocí jednoho z následujících:
bash.exe -c command_to_run
tj.:bash.exe -c ls
bash -c command_to_run
tj.:bash -c ls
wsl command_to_run
tj.:wsl "ls"
; nebo zadejte distribuci, kterou chcete použít ke spuštění, pomocí:ubuntu run ls
Další informace naleznete ve výše odkazovaném článku.
proč nepoužít
$ powershell.exe Start filename
Start
je Windows ekvivalentní k xdg-open
na většině linuxů nebo open
na macOS, což znamená „otevřít pomocí výchozí desktopové aplikace“. Rád bych to alias otevřel.
Nativní řešení
Oficiální řešení poskytované s aktualizací Windows 10 Insider Preview Update (14951) je založen na téměř zapomenutém binfmt_msc Linuxové zařízení pro spouštění binárních souborů. Registrační příkaz pro binfmt_misc by bylo takto (kde /init
je provizorní binfmt_misc "interpret" pro win-spustitelné soubory):
sudo echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register
A pak by se win-executable spustil jako běžné programy:
$ 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
Ne, že jakýkoli spustitelný soubor win musí být umístěn v oknech (DrvFs ) souborový systém – není na souborovém systému Linuxu (VolFs ) - abyste zdědili správný Windows pracovní adresář.
cbwin alternativní
Dokud nezískáte nejnovější sestavení, projekt cbwin nabízí řešení instalací 3 nových linuxových příkazů uvnitř WSL:
wcmd
:volání spustitelného souboru win přescmd.exe
.wrun
:volání spustitelného souboru win synchronně sCreateProcess
, a počkejte na smrt (bez použitícmd.exe
).wstart
:spustí oddělený (asynchronně) příkaz (s použitímcmd.exe
).
Abyste je mohli používat, musíte:
- Nainstalujte cbwin :
- nové
outbash.exe
se nainstaluje do vašeho běžného souborového systému Windows (někde ve vašem%PATH%
), plus - 3 linuxové příkazy v souborovém systému WSL.
- nové
- Použijte toto
outbash.exe
(kdekoli jste jej nainstalovali) ke spuštění WSL, NEC:\Windows\System32\bash.exe
! - Všem spustitelným souborům typu win předponujte některým z těchto příkazů, např.
wrun notepad
.
Tip: Pokud se spustitelný soubor spustil s wcmd
nebo wrun
plodí nějaké děti, ty přežijí jen tak dlouho, dokud ten spustitelný soubor zůstane naživu.
Jinými slovy, pokusit se spustit notepad.exe
s wcmd
nebude fungovat, protože poznámkový blok bude zabit hned po spuštění -- Použijte wrun
(synchronně) nebo wstart
(asynchronně) v tomto případě.