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 -p
opçã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-sessions
mostra 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"
tmux
sessão e no outro estou fora datmux
sessã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.