
答案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 不會嘗試解釋它們。