Dalam Pembaruan Windows 10 Creators (build 1703, April 2017), ini didukung secara native. Jadi sekarang Anda dapat menjalankan binari Windows dari Linux...
notepad.exe
atau .exe
lainnya (ekstensi diperlukan dan harus berada di jalur Anda, beberapa versi lama memerlukan seluruh jalur)
...dan sebaliknya menggunakan salah satu dari yang berikut:
bash.exe -c command_to_run
yaitu:bash.exe -c ls
bash -c command_to_run
yaitu:bash -c ls
wsl command_to_run
yaitu:wsl "ls"
; atau tentukan distro yang ingin Anda gunakan untuk menjalankannya menggunakan:ubuntu run ls
Untuk informasi selengkapnya, lihat artikel tertaut di atas.
mengapa tidak menggunakan saja
$ powershell.exe Start filename
Start
adalah Windows yang setara dengan xdg-open
di sebagian besar linux atau open
di macOS, yang berarti "buka dengan aplikasi desktop default". Saya suka menggunakan alias untuk membuka.
Solusi asli
Solusi resmi yang disediakan dengan Pembaruan Windows 10 Insider Preview (14951) didasarkan pada binfmt_msc yang hampir terlupakan Fasilitas Linux untuk meluncurkan binari. Perintah pendaftaran untuk binfmt_misc akan seperti ini (di mana /init
adalah binfmt_misc sementara "penerjemah" untuk win-executable):
sudo echo ":WSLInterop:M::MZ::/init:" > /proc/sys/fs/binfmt_misc/register
Dan kemudian win-executable akan diluncurkan seperti program biasa:
$ 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
Bukan berarti setiap win-executable harus berada di windows (DrvFs ) sistem file - bukan pada sistem file Linux (VolFs ) - untuk mewarisi Windows yang tepat direktori kerja.
cbwin alternatif
Hingga Anda mendapatkan build terbaru, project cbwin menawarkan solusi, dengan menginstal 3 perintah linux baru di dalam WSL:
wcmd
:memanggil win-executable melaluicmd.exe
.wrun
:memanggil win-executable secara sinkron denganCreateProcess
, dan tunggu mati (tidak menggunakancmd.exe
).wstart
:meluncurkan perintah terpisah (asynchronously) (dengan menggunakancmd.exe
).
Untuk menggunakannya, Anda harus:
- Instal cbwin :
outbash.exe
baru akan diinstal di sistem file Windows reguler Anda (di suatu tempat di%PATH%
Anda ), ditambah- 3 perintah-linux dalam sistem file WSL.
- Gunakan
outbash.exe
ini (di mana pun Anda menginstalnya) untuk memulai WSL, BUKANC:\Windows\System32\bash.exe
! - Awali setiap win-executable dengan salah satu dari perintah tersebut, mis.
wrun notepad
.
Kiat: Jika executable diluncurkan dengan wcmd
atau wrun
memunculkan anak mana pun, ini hanya bertahan selama yang dapat dieksekusi tetap hidup.
Dengan kata lain, mencoba memulai notepad.exe
dengan wcmd
tidak akan berfungsi, karena notepad akan dimatikan setelah diluncurkan -- Gunakan wrun
(sinkron) atau wstart
(asinkron) dalam hal ini.