Nazwa sesji jest przechowywana w zmiennej tmux#S , aby uzyskać do niej dostęp w terminalu , możesz to zrobić
tmux display-message -p "#S"
Jeśli chcesz go użyć .tmux.conf, to po prostu #S. Zauważ, że -popcja wypisze wiadomość na standardowe wyjście, w przeciwnym razie wiadomość zostanie wyświetlona w linii statusu tmux .
Jeśli powyższe polecenie zostanie wywołane w ramach sesji, zwróci nazwę sesji. Jeśli zostanie wywołany poza dowolną sesją, nadal zwróci nazwę ostatniej wciąż działającej sesji. Nie mogłem znaleźć komendy tmux do sprawdzenia, czy jest ona w sesji, czy nie, więc musiałem wymyślić tę pracę:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessionspokazuje wszystkie sesje, jeśli jedna jest dołączona, pokazuje (attached)na końcu. Za pomocą sed pomijamy wszystkie dane wyjściowe (opcję -n) oprócz tego, gdzie znajdujemy słowo kluczowe (attached), w tym wierszu odcinamy wszystko po znaku :, co pozostawia nam nazwę sesji. W przeciwieństwie do mnie działa to w sesji i poza nią tmux display-message -p "#S".
Oczywiście działa to tylko wtedy, gdy w nazwie sesji nie ma ani :nie (attached).
Jak skomentował Chris Johnsen , sposobem sprawdzenia, czy ktoś jest w sesji tmux, jest sprawdzenie, czy ustawiona jest jego zmienna środowiskowa:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmuxsesję, aw drugiej jestem pozatmuxsesją. Kiedy wpisuję oba z nichtmux display-message -p "#S", drukowany jest ten sam wynik, a zwracana wartość obu poleceń jest taka sama.