Не вдається запустити програму в tmux


11

Я отримую цю помилку, коли намагаюся запустити Sublime Text або SourceTree з tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Здається, я також не можу відкрити програми x 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. Будь-яка ідея, що відбувається?


Не просто проблема tmux для мене. Те саме в bash і zsh / oh-my-zsh. Це спрацювало
JB Rainsberger

Відповіді:


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, так і з ОС X. Якщо ви використовуєте лише OS X, ви можете просто додати параметр 'default-command' безпосередньо до свого ~ / .tmux.conf.

  • Якщо ви використовуєте оболонку, відмінну від bash, замініть "bash" на оболонку після перемикача "-l".


7

У мене була така ж проблема з tmux і промальовано її за допомогою псевдонімів reattatch-to-user-names та псевдонімів оболонки.

  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

Не елегантно, але працює.


2
Згідно з документами, просто додайте це до свого ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot

0

Я виявив, що додавання цього до моїх псевдонімів не спрацювало для мене, якщо я вже не був на tmuxсеансі (тобто це призвело до помилки, якщо я був просто в tmuxсесії iTerm без голого).

Якщо ви хочете налаштувати цей псевдонім лише під час сеансу tmux, спробуйте скористатися цим:

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

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

Удачі!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.