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
.