Me gusta mantener mi bash_profileen un repositorio git y clonarlo a cualquier máquina a la que tenga acceso de shell. Como estoy en la tmuxmayoría de las veces, tengo una user@hostcadena en la línea de estado, en lugar de su lugar tradicional en el indicador de comandos de shell.
Sin tmuxembargo, no todos los sitios que uso se han instalado o no siempre lo estoy usando. Me gustaría detectar cuándo no estoy en una tmuxsesión y ajustar mi mensaje en consecuencia. Hasta ahora, mi solución a medio cocer se .bash_profileparece a esto:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(Verificar cada vez probablemente no sea el mejor enfoque, así que estoy abierto a sugerencias para una mejor manera de hacerlo. Las secuencias de comandos Bash no son mi fuerte).

TMUX_PANE. Solo me di cuenta porque tu receta no funcionó. Más tarde descubrí que había usado indebidamente (y posteriormenteunset) una variable en un script de shell que obtengo a través de mi.profile.[ "$TERM" = "screen" ]puede que no funcione. En mi caso, mi pantalla informaba comoscreen-256color.Después de probar diferentes formas, esto es lo que finalmente funcionó para mí, en caso de que ayude a alguien:
En este fragmento de código, verifico si no estamos en el entorno TMUX, lo ejecuto. Si coloca este fragmento de código en su
.bashrcarchivo, ejecutará automáticamente TMUX cada vez que abra la terminal. PD: probado en Ubuntu Shell.fuente
En cuanto a las respuestas anteriores, probar la
${TERM}variable podría conducir a casos de esquina,tmuxestablece variables de entorno dentro de su propia vida:Para verificar si está dentro de un
tmuxentorno, simplemente verifique:$ [ -z "${TMUX}" ] && echo "not in tmux"fuente