Tmux define a variável de ambiente TMUX
em sessões tmux e define TERM
to screen
. Este não é um indicador 100% confiável (por exemplo, você não pode dizer facilmente se está executando screen
dentro de tmux
ou tmux
dentro de screen
), mas deve ser bom o suficiente na prática.
if ! { [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; } then
PS1="@$HOSTNAME $PS1"
fi
Se você precisar integrar isso em um prompt complexo configurado via PROMPT_COMMAND
(que é uma configuração bash, a propósito, não deve ser exportada):
if [ "$TERM" = "screen" ] && [ -n "$TMUX" ]; then
PS1_HOSTNAME=
else
PS1_HOSTNAME="@$HOSTNAME"
fi
PROMPT_COMMAND='PS1="$PS1_HOSTNAME…"'
Se você precisar testar se o tmux está instalado:
if type tmux >/dev/null 2>/dev/null; then
# you can start tmux if you want
fi
A propósito, isso deve entrar em ~/.bashrc
, não ~/.bash_profile
(veja Diferença entre .bashrc e .bash_profile ). ~/.bashrc
é executado em todas as instâncias do bash e contém personalizações de shell, como prompts e aliases. ~/.bash_profile
é executado quando você efetua login (se o seu shell de login é bash). Estranhamente, o bash não lê ~/.bashrc
em shells de login, então seu ~/.bash_profile
deve conter
case $- in *i*) . ~/.bashrc;; esac