Kebanyakan sistem memberikan open
perintah (bergantian dikenal sebagai start
, cygstart
, xdg-open
dll) yang membuka file dalam "default" aplikasi lingkungan desktop, apa pun itu.
Misalnya, dari Powershell ketika saya memasukkan:
PS> start form.pdf
Dokumen muncul terbuka di Edge.
Bisakah Bash-on-Ubuntu-on-Windows melakukan ini?
windows-10
windows-subsystem-for-linux
Cheezmeister
sumber
sumber
... | sed 's/\/mnt\/\(.\)/\1:/1' | xargs cmd.exe /C start
cmd.exe /c start "%localappdata%/lxss/$(readlink -f $some_relative_path)"
Sekarang kita memasak dengan api!Ini tergantung pada apakah Anda ingin A) meluncurkan program linux di dalam WSL atau B) Anda ingin meluncurkan program windows dari prompt bash shell.
Jika B) maka ya jika Anda menginstal cygwin / bash. Sebagai contoh, instal git untuk windows dan Anda memiliki sistem yang berjalan di bawah windows dengan bash. Kemudian Anda bisa menjalankan start, sebenarnya itu dimasukkan sebagai skrip:
Jika A) maka akan jauh lebih sulit terutama jika Anda ingin meluncurkan program linux untuk menampilkan .pdf di jendela GUI. Perhatikan bahwa Windows tahu untuk mengaitkan aplikasi default untuk membuka file pdf tetapi WSL tidak memiliki informasi. Jadi, bahkan jika Anda mendapatkan Desktop yang berjalan di bawah WSL Anda harus mengaitkan aplikasi GUI linux untuk membuka pdf.
Catatan untuk memperjelas, dalam WSL Anda mengeksekusi executable linux bukan executables windows:
sumber
Seperti yang dicatat Martijn, ini adalah cara yang benar untuk menjalankan / membuka aplikasi / file Windows.
Saya merasa sangat berguna untuk mengerjakan ini menjadi skrip bash yang saya simpan di folder yang ada di jalur sistem saya. Saya beri nama
start
dan lakukanchmod 0744
ke file untuk membuatnya dapat dieksekusi. The$*
berarti itu akan berlalu semua argumen baris perintah yang Anda berikan untuk script untukcmd.exe
.Dengan perintah ini di jalur sistem saya, saya dapat perintah seperti ini di Linux yang terbuka di Windows:
start FileXYZ.pdf
// Buka PDF di penampil PDF yang ditetapkan secara default di Windowsstart explorer .
// Buka folder WSL saat ini di Windows Explorerstart MyApp.exe
// Luncurkan aplikasi Windowssumber
a\ whitespace.pdf
. Memulai skrip Anda sepertistart.sh a\ a.pdf b\ b.pdf
tidak akan berfungsi.explorer.exe .
membuka jalur saat ini di Windows Explorereopen
dapat membuka berbagai file (, direktori dan URI) dalam WSL.https://github.com/ko1nksm/eopen-ecd
Contohnya
sumber
Ini bekerja lebih baik untuk saya:
sumber
Anda dapat memanggil
Start-Process
perintah powershell dari dalam WSL:powershell.exe -Command Start-Process file
Untuk membuat ini juga berfungsi dengan path absolut, Anda dapat menggunakan
wslpath -wa
perintah untuk menerjemahkan path ke path windows.powershell.exe -Command Start-Process `wslpath -wa /absolute/path/to/file`
Ini memiliki keunggulan dibandingkan
cmd.exe
solusi: untuk berbagi jaringan yang dipasang,wslpath
menghasilkan jalur UNC seperti\\server\share\
. Jalur UNC ini tidak dapat ditangani olehcmd.exe
.sumber
Saya telah menemukan bahwa explorer.exe bekerja cukup baik dalam menemukan jalur yang diselesaikan dengan benar (bahkan dari direktori jaringan yang dipasang) dan meluncurkan alat default. Satu-satunya masalah adalah Anda tidak dapat memiliki path dalam nama file, jadi Anda perlu membuat fungsi / skrip pembantu kecil untuk meluncurkan explorer dengan benar, misalnya:
Pembaruan: Ngo menunjukkan skrip lain
wslpath
,, yang melakukan konversi jalur, sehingga Anda dapat memanggil explorer.exe langsung di jalur (setelah mengonversi). Maka fungsi di atas menjadi sepele dan dapat dengan mudah dibuat alias.sumber
Coba gunakan
wsl-open
. Ini membuka file dengan aplikasi windows-standar dan dapat diunduh di sini: https://github.com/4U6U57/wsl-open .sumber