我有一个简单的脚本来启动 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
可能会很难找到要使用的浏览器。您可以尝试设置一些环境变量来帮助它。