Lorsque vous quittez le dernier terminal d'une session tmux, peut-il passer à un autre?

Lorsque je quitte le dernier terminal dans une session tmux, il ferme automatiquement tmux et me renvoie au terminal parent. Est-il possible de replace tmux par une autre session, déjà en cours d'exécution, plutôt que de la fermer?

Je crée une nouvelle session nommée pour chaque tâche sur laquelle je travaille, comme TRxxx, email, scratch etc et quand j'en ai fini avec l'un d'entre eux, je ferme tous les terminaux en exécutant exit dans chacun d'entre eux. Lorsque vous exécutez exit dans le dernier terminal d'une session, tmux vous ramènera au terminal parent, mais est-il possible de passer à l'une des autres sessions ouvertes à la place, donc je n'ai pas besoin de rattacher?

Cette question est similaire à " Tuer une session tmux et sélectionner une autre session tmux ", mais je veux fermer mes terminaux de la bonne façon en utilisant la sortie plutôt que de tuer la window.

Le plus proche que j'ai eu était une fonction tmux que j'ai écrite. Normalement, je tmux le shell en appuyant sur Ctrl + D , donc j'ai programmé tmux pour quitter et changer de session en appuyant sur [PREFIX] Ctrl + D. Placez ce qui suit dans votre .tmux.conf :

 bind Cd run-shell " \ if [ #{session_windows} -eq 1 ] && \ [ #{window_panes} -eq 1 ] && \ [ #{pane_current_command} = 'bash' ]; then \ if [ \$(tmux list-sessions | wc -l) -ge 2 ]; then \ tmux switch-client -ln; \ fi; tmux kill-session -t \"#S\"; \ else \ tmux display-message \"Ignoring kill session...\"; \ fi; \ " 

Appuyez sur [PREFIX] Ctrl + D et il quitte la session en cours si (et seulement si) il ne contient qu'un seul shell qui n'exécute aucune autre command. Il passera à une autre session si possible. J'utilise le shell bash, donc vous devrez peut-être le changer en quelque chose que vous utilisez.

ps: au cas où ça count, j'utilise actuellement tmux 1.9a.

J'ai ajouté ceci à mon ~/.tmux.conf :

 set-option -g detach-on-destroy off 

Lorsque je détruis le dernier shell d'une session, il passe à une autre session active. Une fois que toutes les sessions sont fermées, tmux se ferme.

Ajoutez ces lignes à votre .bashrc et essayez:

 if which tmux 2>&1 >/dev/null then # start a new session if not exist test -z ${TMUX} && tmux # when quitting tmux, try to attach to other session while test -z ${TMUX}; do tmux attach || break done fi