Làm cách nào để .bashrc của tôi chỉ gọi TMUX nếu nó tồn tại trên hệ thống của tôi?


7

Tôi sử dụng tmux trên hầu hết các hộp, nhưng không phải tất cả.

Tôi có dòng sau trong tệp .bashrc của mình:

[ -z "$TMUX" ] && export TERM=xterm-256color && exec tmux

mà gọi tmux nếu nó tồn tại.

Tôi nghĩ sự [ -z $TMUX ]có nghĩa là nó sẽ chỉ được sử dụng nếu tmux tồn tại.

Tuy nhiên, trên một hệ thống khác, không có tmux, tôi nhận được

-bash: exec: tmux: không tìm thấy

và lần đăng nhập thất bại

Trên hệ thống chính của tôi, tôi thấy

$ echo $TMUX
/private/var/folders/ks/266xy5lj7x35gfj4csc66444b48rvq/T/tmux-373580663/default,55084,4

Tôi cũng đã thử chỉ [ $TMUX ](không có -z) nhưng điều đó không giúp được gì

Tôi cũng đang tìm kiếm một giải pháp mạnh mẽ hoạt động trong Ubuntu cũng như OSX

Câu trả lời:


7

Bạn đã làm echo $TMUX, trong khi trong một tmuxphiên? Bởi vì TMUXchỉ được đặt, khi trong một phiên.

Thay vào đó hãy thử:

[ -z "$TMUX" ] && command -v tmux >/dev/null && TERM=xterm-256color exec tmux

2
Một giải pháp sạch hơn là which tmux &>/dev/null && .... Chụp đầu ra và kiểm tra nếu trống chỉ là bẩn :-)
Patrick

@Patrick Cảm ơn, tôi đã điều chỉnh nó theo nhận xét của bạn;)
polym

5
@polym which (1) là một chương trình bên ngoài được sử dụng để tìm kiếm PATH để thực thi. Nó hoạt động khác nhau trên các hệ thống khác nhau và bạn không thể dựa vào mã thoát hữu ích; sử dụng (từ hầu hết đến ít di động nhất) '' lệnh -v '' hoặc '' gõ -P '' (để tìm đường dẫn) hoặc '' băm '' (để kiểm tra) thay vào đó. Xem mywiki.wooledge.org/BashFAQ/081
Valentin Bajrami

1
Một nitpick khác TERM=xterm-256color exec tmux:-)
Patrick

1
@VolkerSiegel Phụ thuộc vào cách thực hiện. Nếu điều này chỉ đơn giản là được đặt ở trên cùng .bashrc, thì bạn đã đúng, đó là một vấn đề. Một giải pháp hoàn chỉnh sẽ bao gồm một sự kết hợp kiểm tra để xem nếu $TMUXtrống và nếu thực thi có mặt.
Patrick

5

Ok, vì vậy nếu bạn chỉ muốn bắt đầu tmuxkhi nó tồn tại $PATH khi nó chưa chạy thì bạn có thể làm:

command -v tmux >/dev/null && ${TMUX+:} TERM=xterm-256color exec tmux

Vẫn còn ngắn hơn:

tmux -c "${TMUX+!} :" 2>/dev/null && exec tmux -2

Cái thứ hai yêu cầu tmuxtrả về 0 nếu ${TMUX}không được đặt &&nếu đúng, shell tmux -2thực thi để buộc 256 màu. Nó sẽ chỉ trở lại đúng nếu tmuxcó thể được chạy trong $PATHvà nếu biến môi trường $TMUXkhông tồn tại.


1
"Biến không được xác định hoặc chúng tôi nhận xét toàn bộ lệnh với :" thật thú vị!
Volker Siegel

Cảm ơn đã chỉ ra điều đó! Thay đổi nó nhận xét ở trên.
Volker Siegel

-1

Sử dụng

which tmux && export TERM=xterm-256color && exec tmux

Nếu có tmux, which tmuxsẽ đánh giá đường dẫn đến tmuxnhị phân, do đó true. Nếu không có tmux, nó sẽ đánh giá chuỗi rỗng, vì vậy false.


nah, nó không làm việc, xem unix.stackexchange.com/questions/146128/...
polym
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.