Không thể khởi chạy ứng dụng trong tmux


11

Tôi gặp lỗi này khi tôi cố gắng khởi chạy Sublime Text hoặc SourceTree từ tmux:

$ subl
Unable to launch Sublime Text 2

$ stree
Unable to open SourceTree

Có vẻ như tôi cũng không thể mở ứng dụng os x:

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

Tôi đang sử dụng Yosemite OS X 10.10 (14A388a), iTerm 2 với zsh, tmux 1.0a. Có cùng một vấn đề sử dụng bash. Có ai biết cái gì đang xảy ra không?


Không chỉ là một vấn đề tmux cho tôi. Tương tự trong bash và zsh / oh-my-zsh. Nó hoạt động
JB Rainsberger

Câu trả lời:


15

Cập nhật: Đây là thủ tục không cần thiết với tmux> = v2.6

Tôi tìm thấy một bài đăng của Brendon Rapp mô tả một giải pháp không yêu cầu nhiều bí danh.

$ brew install reattach-to-user-namespace

Thêm dòng sau vào cuối ~ / .tmux.conf của bạn:

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

Tạo một tệp có tên ~ / .tmux-osx.conf với các nội dung sau:

set-option -g default-command "reattach-to-user-namespace -l bash"
  • Giải pháp trên cho phép cùng một tệp .tmux.conf hoạt động chính xác trong cả Linux và OS X. Nếu bạn chỉ sử dụng OS X, bạn có thể chỉ cần thêm tùy chọn 'default-lệnh' vào ~ / .tmux.conf của bạn.

  • Nếu bạn sử dụng shell khác với bash, hãy thay thế 'bash' bằng shell của bạn sau công tắc '-l'.


7

Tôi đã có cùng một vấn đề với tmux và vá nó với không gian tên reattatch-to-user-name và 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

Không thanh lịch, nhưng hoạt động.


2
Theo các tài liệu, chỉ cần thêm phần này vào ~/.tmux.conf: set-option -g default-command "reattach-to-user-namespace -l zsh"
nicerobot

0

Tôi thấy rằng việc thêm nó vào các bí danh của tôi sẽ không hiệu quả với tôi nếu tôi chưa tham gia một tmuxphiên (nghĩa là nó đã gây ra lỗi nếu tôi chỉ ở trong một tmuxphiên iTerm trần trụi, không có trần trụi ).

Nếu bạn muốn chỉ thiết lập bí danh này khi bạn đang ở trong phiên tmux, thay vào đó hãy thử điều này:

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

Bạn có thể cần vào echo $TERMbên trong phiên tmux để xem $TERMbiến môi trường của bạn được đặt thành gì. Của tôi là thực sự screen-256color, vì vậy tôi đã trao đổi giá trị trên một cách thích hợp.

Chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.