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: /
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
.
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.
Installez WSLU et utilisez 'BROWSER = wslview'
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'