Browser im Hostsystem von Windows Subsystem für Linux öffnen?


9

Ich habe ein Ruby-Skript, das diese Zeile enthält:

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

html_pathist der Pfad zu einer lokalen .htmlDatei. Das Skript öffnet also einen Browser, in dem ich diese Datei normalerweise einsehen und anzeigen kann.

Im Gegensatz zu einer MacOS-Umgebung funktioniert dies in bashder WSL nicht. Beim Ausführen des Skripts passiert nichts , und wenn ich den openAufruf direkt in der Konsole ausführe, erhalte ich Folgendes:

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

Ich habe bereits untersucht, dass openUbuntu etwas anderes macht und ich sollte seeoder xdg-openzum Öffnen einer Datei verwenden.

Leider funktionieren diese auch nicht in der 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

und

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'

Das macht Sinn: In der WSL ist kein Browser verfügbar.

Kann ich diese BROWSERVariable irgendwie so einstellen , dass sie seein bashder WSL funktioniert ?


Bonusfrage: Wenn ja, wie kann ich das Ruby-Skript zum Laufen bringen, ohne den Code zu ändern? Es ist eine externe Abhängigkeit: /

Antworten:


12

Sie können die BROWSERVariable einstellen . Es gibt einen langen Artikel, in dem erklärt wird, wie Umgebungsvariablen festgelegt werden .

Wenn Sie die Variable für die aktuelle Terminalsitzung festlegen möchten, können Sie Folgendes verwenden:

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

(vorausgesetzt, Sie möchten Firefox verwenden und haben es installiert C:\Program Files\Firefox\firefox.exe)

Wenn dies dauerhaft sein soll , können Sie die obige Zeile zur Datei hinzufügen ~/.bashrc.


4

Aus irgendeinem Grund kann WSL den Windows-Dateiexplorer sehen. Wenn Sie tun:

explorer.exe Preview.html

In der Konsole sollte es im Standard-Windows-Webbrowser geöffnet sein.


3

Wenn Sie die beiden obigen Antworten kombinieren, besteht die einfachste Lösung darin, BROWSER auf Windows-Datei-Explorer einzustellen, um den Standard-Windows-Webbrowser zu verwenden

export BROWSER='/mnt/c/Windows/explorer.exe'

Ich mag diese Idee, aber wenn ich xdg-open https://www.google.commeinen Firefox für Windows aufrufe, öffne ich zwei Tabs mit Google, während es beim Ausführen nur ein Tab ist explorer.exe https://www.google.com. Irgendeine Idee, wie man über xdg-open nur einen Tab bekommt?
Holger

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.