Пытаюсь открыть приложение из командной строки (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.
Я пробовал как собственные приложения Apple (Preview, Font Book, Contacts), так и сторонние (Adobe, Evernote и т. д.). Никакой разницы. Единственное приложение, которое, похоже, работает, это Finder. ( 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, но переписанный launchd в OS X Yosemite не обходит эту ошибку tmux.
Вам придется либо ждать, пока Apple, возможно, выпустит обновление, которое обойдет ошибку tmux, либо донимать разработчиков tmux, чтобы они исправили эту ошибку в tmux, которая известна уже как минимум 6 лет.