web-dev-qa-db-fra.com

Ouvrir le navigateur dans le système hôte à partir du sous-système Windows pour Linux?

J'ai un script Ruby qui contient cette ligne:

system("open '#{html_path}'")

html_path est le chemin d'accès à un fichier .html local. Le script ouvre donc un navigateur où je peux normalement inspecter et afficher ce fichier.

Contrairement à un environnement MacOS, cela ne fonctionne pas dans bash de WSL. Exécution du script il ne se passe rien et lorsque j'exécute l'appel open directement dans la console, je reçois ceci:

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ open Preview.html
Couldn't get a file descriptor referring to the console

J'ai déjà étudié le fait que open fait quelque chose de différent dans Ubuntu et que je devrais utiliser see ou xdg-open pour ouvrir un fichier.

Malheureusement, ces fichiers ne fonctionnent pas non plus dans WSL:

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ see ./Preview.html
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /us
r/bin/see line 528.
Couldn't find a suitable web browser!
Set the BROWSER environment variable to your desired browser.
Warning: program returned non-zero exit code #1

et

sujan@LenovoX1:/mnt/c/Users/Jan/Documents/foo$ xdg-open ./Preview.html
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /us
r/bin/run-mailcap line 528.
Couldn't find a suitable web browser!
Set the BROWSER environment variable to your desired browser.
Warning: program returned non-zero exit code #1
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 771: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening './Preview.html'

En y réfléchissant, cela a du sens: il n’ya pas de navigateur disponible dans WSL.

Puis-je en quelque sorte définir cette variable BROWSER pour que see fonctionne dans bash de WSL?


Question bonus: Si oui, comment puis-je faire fonctionner le script Ruby sans changer ce code? C'est une dépendance externe: /

6
janpio

Vous pouvez définir la variable BROWSER. Il existe un long article expliquant comment définir des variables d'environnement .

Si vous souhaitez définir la variable pour la session de terminal en cours, vous pouvez utiliser:

export BROWSER='/mnt/c/Program Files/Firefox/firefox.exe'

(en supposant que vous souhaitiez utiliser Firefox et l'avoir installé dans C:\Program Files\Firefox\firefox.exe)

Si vous voulez que cela soit persistant , vous pouvez ajouter la ligne ci-dessus au fichier ~/.bashrc.

10
Florian_1990

Pour une raison quelconque, WSL peut voir l’explorateur de fichiers Windows. Si tu fais:

Explorer.exe Preview.html

dans la console, il devrait s’ouvrir dans le navigateur Web Windows par défaut.

4
Elizabeth Hou

Installez WSLU et utilisez 'BROWSER = wslview'

2
Pawel Zubrycki

En combinant les deux réponses ci-dessus, la solution la plus simple consiste à définir BROWSER sur l'Explorateur de fichiers Windows afin d'utiliser le navigateur Web Windows par défaut.

export BROWSER='/mnt/c/Windows/Explorer.exe'
2
Yehonathan Sharvit