Eu gosto de manter o meu bash_profile
em um repositório git e cloná-lo para todas as máquinas às quais tenho acesso shell. Como estou na tmux
maior parte do tempo, tenho uma user@host
string na linha de status, em vez de seu ponto tradicional no prompt do shell.
tmux
Porém, nem todos os sites que eu uso estão instalados, ou talvez nem sempre o esteja usando. Gostaria de detectar quando não estou em uma tmux
sessão e ajustar meu prompt de acordo. Até agora, minha solução semi-assada .bash_profile
é mais ou menos assim:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(Verificar todas as vezes provavelmente não é a melhor abordagem, por isso estou aberto a sugestões de uma maneira melhor de fazer isso. Os scripts Bash não são o meu forte.)
TMUX_PANE
também. Eu só notei porque sua receita não funcionou. Mais tarde, descobri que havia usado indevidamente (e subseqüentementeunset
) uma variável em um shell script que estou procurando no meu.profile
.[ "$TERM" = "screen" ]
pode não funcionar. No meu caso, minha tela estava relatando emscreen-256
cores.Depois de tentar maneiras diferentes, é isso que finalmente funcionou para mim, caso ajude alguém por aí:
Neste trecho de código, verifico se não estamos no ambiente TMUX, inicio-o. Se você colocar esse trecho de código em seu
.bashrc
arquivo, você executará o TMUX automaticamente sempre que abrir o terminal! PS: testado no shell do Ubuntu.fonte
Quanto às respostas anteriores, testar a
${TERM}
variável pode levar a casos extremos,tmux
define variáveis de ambiente dentro de sua própria vida:Para verificar se você está dentro de um
tmux
ambiente, basta verificar:$ [ -z "${TMUX}" ] && echo "not in tmux"
fonte