Anwendung in tmux kann nicht gestartet werden

11

Ich erhalte diese Fehlermeldung, wenn ich versuche, Sublime Text oder SourceTree von tmux aus zu starten:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Es scheint, dass ich os x Apps auch nicht öffnen kann:

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

Ich verwende Yosemite OS X 10.10 (14A388a), iTerm 2 mit zsh, tmux 1.0a. Hatte das gleiche Problem mit Bash. Irgendeine Idee, was los ist?

Benjamin Cheah
quelle
Nicht nur ein tmux-Problem für mich. Gleiches gilt für bash und zsh / oh-my-zsh. Es hat funktioniert
JB Rainsberger

Antworten:

15

Update: Diese Prozedur ist mit tmux> = v2.6 nicht erforderlich

Ich habe einen Beitrag von Brendon Rapp gefunden , der eine Lösung beschreibt, die nicht viele Aliase erfordert.

$ brew install reattach-to-user-namespace

Fügen Sie die folgende Zeile am Ende Ihrer ~ / .tmux.conf hinzu:

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

Erstellen Sie eine Datei mit dem Namen ~ / .tmux-osx.conf mit folgendem Inhalt:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • Mit der obigen Lösung kann dieselbe .tmux.conf-Datei sowohl unter Linux als auch unter OS X ordnungsgemäß funktionieren. Wenn Sie nur OS X verwenden, können Sie die Option 'default-command' einfach direkt zu Ihrer ~ / .tmux.conf hinzufügen.

  • Wenn Sie eine andere Shell als bash verwenden, ersetzen Sie 'bash' nach dem Schalter '-l' durch Ihre Shell.

Jon Nalley
quelle
7

Ich hatte das gleiche Problem mit tmux und habe es mit Reattatch-to-User-Namespace- und Shell-Aliasen gepatcht .

  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

Nicht elegant, funktioniert aber.

e9t
quelle
2
~/.tmux.confset-option -g default-command "reattach-to-user-namespace -l zsh"
Fügen Sie
0

Ich stellte fest, dass das Hinzufügen zu meinen Aliasnamen für mich nicht funktionierte, wenn ich nicht bereits in einer tmuxSitzung war (dh es gab einen Fehler, wenn ich mich nur in einer nackten, tmux-losen iTerm-Sitzung befand).

Wenn Sie diesen Alias ​​nur in einer tmux-Sitzung einrichten möchten, versuchen Sie stattdessen Folgendes:

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

Möglicherweise müssen Sie sich echo $TERMinnerhalb einer tmux-Sitzung befinden, um zu sehen, auf was Ihre $TERMUmgebungsvariable eingestellt ist. Meins war es tatsächlich screen-256color, also habe ich den obigen Wert entsprechend ausgetauscht.

Viel Glück!

Noah Chase
quelle