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