Linux:命令在默认浏览器中打开URL

在Linux(不同的公共发行版)上,我们必须执行哪些命令(来自Java,但不应该这么做),以在默认浏览器中打开给定的URL?

大多数交叉分配的是xdg-open http://stackoverflow.com

在Java(版本6+)中,你也可以这样做:

 Desktop d = Desktop.getDesktop(); d.browse(uri); 

虽然这不适用于所有的Linux。 在撰写本文时,Gnome支持,而KDE则不支持。

在Ubuntu上你可以试试gnome-open。

$ gnome-open http://www.google.com

我相信最简单的方法是使用Python:

 python -m webbrowser "http://www.example.com/" 

至less在Debian及其衍生产品上,有一个“明智的浏览器”shell脚本,它select最适合给定url的浏览器。

http://man.he.net/man1/sensible-browser

我认为使用xdg-open http://example.com可能是最好的select。

如果他们没有安装它,我想他们可能只有kde-open或者gnome-open (两者都需要一个文件/ url)或者其他一些解决方法,比如循环浏览器的可执行文件名,直到find一个可以执行(使用哪个)。 如果你想要一个完整的解决方法/回退列表,我build议你阅读xdg-open(这是一个调用kde-open / gnome-open / etc或其他回退的shell脚本)。

但是,由于xdg-open和xdg-mime(用于其中一个回退)是shell脚本,我build议将它们包括在您的应用程序中,如果调用which xdg-open失败,则将它们添加到子程序环境中的临时PATHvariables,然后调用对他们。 如果xdg打开失败,我build议抛出一个exception与从stderr上输出的错误消息,并捕获exception和打印/显示错误消息。

我会忽略java awt桌面解决scheme,因为这个错误似乎表明他们不打算在短时间内支持非gnome桌面。

我认为是由shellholic所描述的xdg-open的组合,如果失败的话,使用这里描述的which命令find浏览器的解决scheme可能是最好的解决scheme。

 sensible-browser [options] [URL or filename]; # Said to be the best. # Server translates to: echo $BROWSER; w3m [options] [URL or filename] # Desktop (X11): I use/prefer, x-www-browser http://tv.jimmylandstudios.com 

在开放命令附带的发行版中,

 $ open http://www.google.com