O nome da sessão é armazenado na variável tmux#S , para acessá-lo em um terminal , você pode fazer
tmux display-message -p "#S"
Se você quiser usá-lo .tmux.conf, é simplesmente #S. Observe que a -popção imprimirá a mensagem no stdout, caso contrário, a mensagem será exibida na linha de status do tmux .
Se o comando acima for chamado dentro de uma sessão, ele retornará o nome da sessão. Se for chamado fora de qualquer sessão, ainda retornará o nome da última sessão ainda em execução. Não consegui encontrar um comando tmux para verificar, se um está dentro de uma sessão ou não, então tive que apresentar este trabalho:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessionsmostra todas as sessões, se houver uma anexada, é exibida (attached)no final. Com sed , suprimimos toda a saída (opção -n), exceto onde encontramos a palavra-chave (attached); nessa linha, cortamos tudo depois de a :, o que nos deixa com o nome da sessão. Isso funciona para mim dentro e fora de uma sessão, ao contrário tmux display-message -p "#S".
Obviamente, isso funciona apenas se não houver :e não (attached)no nome da sessão.
Como comentado por Chris Johnsen , uma maneira de verificar se alguém está dentro de uma sessão tmux é ver se sua variável de ambiente está configurada:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmuxsessão e no outro estou fora datmuxsessão. Quando digito o comando para os doistmux display-message -p "#S", o mesmo resultado é impresso e o valor de retorno dos dois comandos é o mesmo.