El nombre de la sesión se almacena en la variable tmux#S
, para acceder a ella en un terminal , puede hacer
tmux display-message -p "#S"
Si quieres usarlo .tmux.conf
, es simplemente #S
. Tenga en cuenta que la -p
opción imprimirá el mensaje en stdout; de lo contrario, el mensaje se mostrará en la línea de estado de tmux .
Si se llama al comando anterior dentro de una sesión, devuelve el nombre de la sesión. Si se llama fuera de cualquier sesión, aún devuelve el nombre de la última sesión en ejecución. No pude encontrar un comando tmux para verificar, si uno está dentro de una sesión o no, así que tuve que idear esta solución:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
muestra todas las sesiones, si hay una adjunta, se muestra (attached)
al final. Con sed , suprimimos toda la salida (opción -n
) excepto donde encontramos la palabra clave (attached)
, en esta línea cortamos todo después de un :
, lo que nos deja con el nombre de la sesión. Esto funciona para mí dentro y fuera de una sesión, a diferencia de tmux display-message -p "#S"
.
Por supuesto, esto funciona solo si no hay :
y no (attached)
en el nombre de la sesión.
Como comentó Chris Johnsen , una forma de verificar si uno está dentro de una sesión tmux es ver si su variable de entorno está configurada:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
sesión y en la otra estoy fuera de latmux
sesión. Cuando escribo en ambos el comandotmux display-message -p "#S"
, se imprime el mismo resultado y el valor de retorno de ambos comandos es el mismo.