如何从 bash 脚本打开 URL?

如何从 bash 脚本打开 URL?

我有一个简单的脚本来启动 node.js 网络服务器并在浏览器中打开 URL。但是最后一部分似乎不起作用,它不会在浏览器(或其他地方)中打开 URL。

这是我目前得到的代码:

#!/bin/bash
node server.js;
xdg-open http://localhost:9000/;

我搜索到的所有地方都发现相同的结果,我必须使用:

xdg-open URL

但它似乎只有在终端中输入该代码时才有效,而不是在我的 startserver.sh 文件中。它将启动服务器但不会打开 URL,但在终端中输入代码似乎有效。

这很令人困惑,为什么它在我的脚本中不起作用?

答案1

这是一个非常简短的答案,node server.js作为后台进程启动:

#!/bin/bash
node server.js &
xdg-open http://localhost:9000/

答案2

xdg-open实际上是 shell 脚本(在我的系统上)。它使用启发式方法来猜测你的浏览器是什么。你可以在脚本中运行它来查看它试图做什么

sh -x xdg-open http://localhost:9000/ >&/tmp/errors

查看/tmp/errors任何失败消息。您也可以简单地用浏览器的名称替换 xdg-open,例如 Firefox。

如果您从桌面按钮启动脚本,则启动器可能会在到达脚本末尾时终止进程组。尝试添加

 sleep 99999

最后看看是否确实如此。

startserver.sh如果您尝试从桌面环境以外的其他地方运行,xdg-open可能会很难找到要使用的浏览器。您可以尝试设置一些环境变量来帮助它。

相关内容