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
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
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.
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 .