嘗試從內部命令列 (Terminal.app) 開啟應用程式tmux
(透過 MacPorts 版本 1.9a 安裝),並得到以下結果:
$ open /Applications/Adobe\ Reader.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Adobe Reader.app.
同樣的命令工作正常,從同一航站樓,如果在 tmux 之外執行。
應從主機讀取環境;以下內容位於 tmux.conf 中:set -g update-environment -r
重新啟動terminal.app或tmux時,有時會出錯並顯示不同的訊息首先,(見下文)再次嘗試時,出現上述錯誤 -10810。
$ open /Applications/Adobe\ Reader.app/
The window server could not be contacted. open must be run with a user logged in at the console, either as that user or as root.
我嘗試過蘋果自己的應用程式(預覽、字體冊、聯絡人)和第三方應用程式(Adobe、Evernote 等)。沒有不同。查找器是一款似乎確實有效的應用程式。 (open [dirname]
, 例如。)
答案1
有一個解決方案/解決方法:
- 更新您的
reattach-to-user-namespace
. tmux 使用它來執行程式。我使用brew而不是macports,所以我這樣做了brew update; brew upgrade reattach-to-user-namespace
: Macports 很可能能夠做類似的事情。 將以下內容新增至您的
.tmux.conf
文件:set -g default-command "reattach-to-user-namespace -l /bin/bash"
重新啟動 tmux 會話,這應該允許您從命令列啟動程式。
更多資訊請參見這個github問題。
答案2
問題是 tmux 在不應該的情況下將引導程式變更為系統網域(請參閱https://trac.macports.org/ticket/18357)。舊版的 launchd 解決了 tmux 中的此錯誤,但在 OS X Yosemite 中重寫的 launchd 無法解決此 tmux 錯誤。
您要么需要等待 Apple 可能發布解決 tmux bug 的更新,要么需要糾纏 tmux 開發人員來修復 tmux 中的這個已知至少 6 年的 bug。