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: /

janpio
quelle

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.

Florian_1990
quelle
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.

Elizabeth Hou
quelle
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'
Yehonathan Sharvit
quelle
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
3

Installiere WSLU und benutze 'BROWSER = wslview'

Pawel Zubrycki
quelle