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

3933
janpio

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

system("open '#'") 

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

Im Gegensatz zu einer MacOS-Umgebung funktioniert dies in bashWSL nicht. Beim Ausführen des Skripts passiert nichts, und wenn ich den openAufruf direkt in der Konsole ausführte, 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 schon recherchiert, dass openetwas in Ubuntu anders ist und ich verwenden seeoder xdg-openeine Datei öffnen soll.

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' 

Wenn man darüber nachdenkt, macht das Sinn: In der WSL ist kein Browser verfügbar.

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


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

2

4 Antworten auf die Frage

6
Florian_1990

Sie können die BROWSERVariable einstellen . In einem langen Artikel wird beschrieben, 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 installiert haben C:\Program Files\Firefox\firefox.exe)

Wenn Sie dies dauerhaft wünschen, können Sie der Datei die obige Zeile hinzufügen ~/.bashrc.

4
Elizabeth Hou

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

explorer.exe Preview.html

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

2
Yehonathan Sharvit

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

export BROWSER='/mnt/c/Windows/explorer.exe' 
1
Pawel Zubrycki

Installiere WSLU und verwende 'BROWSER = wslview'