La plupart des systèmes fournissent une commande open
(également appelée start
, cygstart
, xdg-open
etc.) qui ouvre un fichier dans l'application "par défaut" de l'environnement de bureau, quel qu'il soit.
Par exemple, de Powershell quand j'entre:
PS> start form.pdf
Le document s'ouvre dans Edge.
Est-ce que Bash sur Ubuntu sur Windows peut le faire?
Depuis que l'interopérabilité Windows Linux a commencé à fonctionner, vous pouvez maintenant appeler:
cmd.exe /C start <file>
Cela dépend si vous voulez A) lancer un programme Linux dans WSL ou B) vous voulez lancer un programme Windows à partir d'une invite de shell bash.
Si B), alors oui si vous installez cygwin/bash. Par exemple, installez git pour Windows et vous avez un système fonctionnant sous Windows avec bash. Ensuite, vous pouvez simplement lancer start, en fait, il est inclus en tant que script:
$ cat /usr/bin/start
#!/usr/bin/env bash
# Copyright (C) 2014, Alexey Pavlov
# mailto:[email protected]
# This file is part of Minimal SYStem version 2.
# https://sourceforge.net/p/msys2/wiki/MSYS2%20installation/
# File: start
cmd //c start "${@//&/^&}"
Si A), cela devient beaucoup plus difficile, surtout si vous voulez lancer un programme Linux pour afficher un fichier .pdf dans une fenêtre graphique. Notez que Windows sait associer une application par défaut pour ouvrir un fichier pdf, mais WSL ne dispose pas des informations. Ainsi, même si vous obteniez un bureau fonctionnant sous WSL , vous auriez besoin d'associer une application d'interface graphique Linux pour ouvrir le fichier PDF.
Remarque pour clarifier, dans WSL, vous exécutez des exécutables linux et non des exécutables Windows:
(WSL):~# file /bin/gzip
/bin/gzip: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=68cc3c090405cf6d40e97d2ff58085fd26940602, stripped
(WSL):~# file /mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe
/mnt/c/Program Files/Internet Explorer/iexplore.exe: PE32+ executable (GUI) x86-64, for MS Windows
(WSL):~# /mnt/c/Program\ Files/Internet\ Explorer/iexplore.exe
bash: /mnt/c/Program Files/Internet Explorer/iexplore.exe: cannot execute binary file: Exec format error
J'ai constaté que Explorer.exe fonctionne assez bien pour trouver le chemin résolu correct (même des répertoires de réseau montés) et pour lancer l'outil par défaut. Le seul problème est que vous ne pouvez pas avoir de chemins dans le nom du fichier. Vous devez donc créer une petite fonction/script d'aide pour lancer correctement Explorer, par exemple:
win() {
# get full unsymlinked filename
file=`readlink -e $1`
dir=$(dirname "$file")
base=$(basename "$file")
# open item using default windows application
(cd "$dir"; Explorer.exe "$base")
}