答案1
奇怪的是,它在我的 Debian 上开箱即用。尝试在后台运行它:
xdg-open http://www.google.com &
您可以通过将以下行添加到~/.bashrc
文件中来将其变成一个函数:
function open () {
xdg-open "$*" &
}
然后您只需运行即可open http://www.google.com
,它将在后台运行。
答案2
如果您想将进程从当前 shell 中分离出来,而不是将其作为后台作业启动xdg-open http://www.google.com &
,我喜欢detach
公用事业:
detach xdg-open http://www.google.com
人们可以为此创建一个别名。我喜欢detach
over nohup
as 默认关闭 stdin、stdout 和 stderr,这样它的调用就更干净。
答案3
xdg-open
等待程序完成。这是设计使然。如果程序是文本模式程序,则它必须保留在终端的前台。即使程序是 GUI 程序,如果xdg-open
从脚本使用并且脚本想要在文件编辑后执行某些操作(例如,将新版本发送到某处或以其他方式使用新版本进行某些操作),则此行为很有用。
如果您不想等待,请xdg-open
在后台运行。您可以通过在末尾添加“&”号来在后台运行任何 shell 命令。
xdg-open http://www.google.com &
对于某些程序,xdg-open
会立即返回。实际上发生的情况是调用的程序xdg-open
立即返回。这种情况通常发生在在单个实例中打开所有文件的 GUI 程序中:当您第二次启动它们时,它们会向正在运行的实例发送一条消息,告诉它打开文件,并立即退出。
答案4
尝试这个:
DISPLAY=:0.0; xdg-open '<url>'
我使用这种技术将 Magnet:// URL 排入我的 Bit Torrent 客户端 Vuze 中。
ssh someserver "DISPLAY=:0.0; xdg-open 'http://www.google.com/'"
单引号有助于保护 URL 的内容,以便 shell 不会尝试解释它们。