Il nome della sessione è memorizzato nella variabile tmux#S
, per accedervi in un terminale , puoi farlo
tmux display-message -p "#S"
Se vuoi usarlo .tmux.conf
, è semplicemente #S
. Si noti che l' -p
opzione stamperà il messaggio su stdout, altrimenti il messaggio verrà visualizzato nella riga di stato di tmux .
Se il comando precedente viene chiamato all'interno di una sessione, restituisce il nome della sessione. Se viene chiamato al di fuori di qualsiasi sessione, restituisce comunque il nome dell'ultima sessione ancora in esecuzione. Non sono riuscito a trovare un comando tmux per verificare, se uno è all'interno di una sessione o meno, quindi ho dovuto escogitare questo lavoro in giro:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
mostra tutte le sessioni, se ne è collegata una, mostra (attached)
alla fine. Con sed sopprimiamo tutto l'output (opzione -n
) tranne dove troviamo la parola chiave (attached)
, in questa riga eliminiamo tutto ciò che segue a :
, che ci lascia con il nome della sessione. Questo funziona per me dentro e fuori una sessione, al contrario di tmux display-message -p "#S"
.
Naturalmente questo funziona solo se non c'è :
e no (attached)
nel nome della sessione.
Come commentato da Chris Johnsen , un modo per verificare se uno è all'interno di una sessione di tmux è vedere se la sua variabile di ambiente è impostata:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
sessione e nell'altra sono fuori dallatmux
sessione. Quando digito entrambi i comanditmux display-message -p "#S"
, viene stampato lo stesso risultato e il valore restituito di entrambi i comandi è lo stesso.