Como posso fazer com que meu .bashrc invoque o TMUX somente se ele existir no meu sistema?

7

Eu uso o tmux na maioria das caixas, mas não em todas.

Eu tenho a seguinte linha no meu arquivo .bashrc:

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

que invoca o tmux, se existir.

Eu pensei que o [ -z $TMUX ] significava que ele só seria usado se o tmux existisse.

No entanto, em outro sistema, sem o tmux, recebo

-bash: exec: tmux: não encontrado

e a tentativa de login falha

No meu sistema principal, vejo

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

Eu também tentei apenas [ $TMUX ] (ou seja, não -z ), mas isso não ajudou

Também estou procurando uma solução robusta que funcione tanto no Ubuntu quanto no OSX

    
por Michael Durrant 23.07.2014 / 16:32

3 respostas

7

Você fez echo $TMUX , enquanto em uma sessão tmux ? Porque TMUX é definido apenas quando em uma sessão.

Tente isso:

[ -z "$TMUX" ] && command -v tmux >/dev/null && TERM=xterm-256color exec tmux
    
por 23.07.2014 / 16:39
5

Ok, então, se você quiser iniciar tmux somente quando ele existir em $PATH e quando ainda não estiver em execução, você poderá fazer:

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

Mais curto ainda:

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

O segundo pergunta tmux para retornar 0 se ${TMUX} não estiver definido && se true, o shell executa tmux -2 para forçar 256 cores. Ele só retornará true se tmux puder ser executado em $PATH e se o ambiente variablete $TMUX não existir.

    
por 23.07.2014 / 16:49
-1

Use

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

Se houver tmux , which tmux avaliará o caminho para tmux binário, portanto, para true . Se não houver tmux , ele será avaliado como string vazia, portanto, para false .

    
por 23.07.2014 / 17:23

Tags