Me gusta mantener mi bash_profile
en un repositorio git y clonarlo a cualquier máquina a la que tenga acceso de shell. Como estoy en la tmux
mayoría de las veces, tengo una user@host
cadena en la línea de estado, en lugar de su lugar tradicional en el indicador de comandos de shell.
Sin tmux
embargo, 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 tmux
sesión y ajustar mi mensaje en consecuencia. Hasta ahora, mi solución a medio cocer se .bash_profile
parece 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-256
color.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
.bashrc
archivo, 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,tmux
establece variables de entorno dentro de su propia vida:Para verificar si está dentro de un
tmux
entorno, simplemente verifique:$ [ -z "${TMUX}" ] && echo "not in tmux"
fuente