11

Я получаю эту ошибку при попытке запустить Sublime Text или SourceTree из tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Кажется, я не могу открыть приложения OS X либо:

$ open MPlayerX.app
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/MPlayerX.app.

Я использую Yosemite OS X 10.10 (14A388a), iTerm 2 с zsh, tmux 1.0a. Была та же проблема с использованием Bash. Есть идеи, что происходит?

3 ответа3

15

Обновление: эта процедура не нужна с tmux> = v2.6

Я нашел сообщение Брендона Раппа, в котором описывается решение, которое не требует много псевдонимов.

$ brew install reattach-to-user-namespace

Добавьте следующую строку в конец вашего ~/.tmux.conf:

if-shell 'test "$(uname)" = "Darwin"' 'source ~/.tmux-osx.conf'

Создайте файл с именем ~/.tmux-osx.conf со следующим содержимым:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • Приведенное выше решение позволяет одному и тому же файлу .tmux.conf работать корректно как в Linux, так и в OS X. Если вы используете только OS X, вы можете просто добавить параметр 'default-command' прямо в ваш ~/.tmux.conf.

  • Если вы используете оболочку, отличную от bash, замените 'bash' на вашу оболочку после ключа -l.

7

У меня была та же проблема с tmux и я исправил ее с помощью псевдонимов reattatch-to-user-namespace и shell.

  1. $ brew install reattach-to-user-namespace
  2. $ vi ~/.bash_aliases

    alias subl='reattach-to-user-namespace subl'
    alias stree='reattach-to-user-namespace stree'
    alias open='reattach-to-user-namespace open'
    
  3. $ source ~/.bash_aliases

Не элегантно, но работает.

0

Я обнаружил, что добавление этого в мои псевдонимы не работает для меня, если я еще не был в сеансе tmux (то есть выдает ошибку, если я был просто в голом сеансе iTerm без tmux ).

Если вы хотите настроить этот псевдоним только в сеансе tmux, попробуйте вместо этого:

if [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; then
  alias stree="reattach-to-user-namespace stree"
fi

Вам может потребоваться echo $TERM внутри сеанса tmux, чтобы увидеть, на что установлена переменная среды $TERM . На самом деле у меня был screen-256color , поэтому я соответственно поменял значение выше.

Удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .