Le nom de la session est stocké dans la variable tmux#S
, pour y accéder dans un terminal , vous pouvez faire
tmux display-message -p "#S"
Si vous voulez l'utiliser .tmux.conf
, c'est tout simplement #S
. Notez que l' -p
option imprimera le message sur stdout, sinon le message s'affiche dans la ligne d'état tmux .
Si la commande ci-dessus est appelée dans une session, elle renvoie le nom de la session. S'il est appelé en dehors d'une session, il renvoie toujours le nom de la dernière session en cours d'exécution. Je n'ai pas pu trouver une commande tmux pour vérifier, si une est à l'intérieur d'une session ou non, j'ai donc dû trouver cette solution :
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
affiche toutes les sessions, si une est jointe, elle s'affiche (attached)
à la fin. Avec sed, nous supprimons toutes les sorties (option -n
) sauf là où nous trouvons le mot-clé (attached)
, sur cette ligne, nous supprimons tout après un :
, ce qui nous laisse le nom de la session. Cela fonctionne pour moi à l'intérieur et à l'extérieur d'une session, par opposition à tmux display-message -p "#S"
.
Bien sûr, cela ne fonctionne que s'il n'y a pas :
et non (attached)
au nom de la session.
Comme l'a commenté Chris Johnsen , un moyen de vérifier si l'on se trouve dans une session tmux est de voir si sa variable d'environnement est définie:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
session et dans l'autre je suis en dehors de latmux
session. Lorsque je tape la commande dans les deuxtmux display-message -p "#S"
, le même résultat est imprimé et la valeur de retour des deux commandes est la même.