LSOpenURLsWithRole() 在 Yosemite 上从 tmux 中失败并显示错误 -10810

kri*_*sen 18 terminal macports command-line tmux macos

尝试tmux从命令行(Terminal.app),内部(通过 MacPorts 安装,版本 1.9a)打开应用程序,并得到以下结果:

$ open /Applications/Adobe\ Reader.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Adobe Reader.app.
Run Code Online (Sandbox Code Playgroud)

如果在 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.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过 Apple 自己的应用程序(预览、字体簿、联系人)和第三方(Adobe、Evernote 等)。没有不同。一个似乎有效的应用程序是 finder。(open [dirname]例如。)

小智 20

有一个解决方案/解决方法:

  • 更新您的reattach-to-user-namespace. tmux 使用它来执行程序。我用酿造,而不是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 问题中找到更多信息