Solución 1:
(Obtenido de "¿Cómo puedo saber si estoy en una pantalla?" en StackOverflow y escrito por el usuario jho. P.D. No puede votar por un duplicado en los sitios de StackExchange).
Comprobar $STY
. Si es nulo, estás en una terminal "real". Si contiene algo, es el nombre de la pantalla en la que te encuentras.
Si no estás en la pantalla:
[email protected] ~ $ echo $STY
[email protected] ~ $
Si estás en pantalla:
[email protected] ~ $ echo $STY
2026.pts-0.ip-10-0-1-71
Si usa tmux en lugar de pantalla, también marque $TMUX
. Para agregar esto a su aviso, agregue lo siguiente a su ~/.bashrc
:
if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi
Solución 2:
Busque $STY
que proporciona detalles que screen
utiliza para comunicarse consigo mismo; $WINDOW
será entonces el actual screen
número de ventana.
Solución 3:
La verificación simple que suelo usar es presionar Ctrl -a :
-
Si el cursor salta al principio de la línea , no estoy dentro una sesión de pantalla.
-
Si no pasa nada , sé que estoy dentro una sesión de pantalla y que acabo de usar la tecla de control de pantalla. Luego presiono a (saltar al principio de la línea), w (mostrar las ventanas de la pantalla actual) o ejecutar algún otro comando de pantalla "inofensivo" para volver al símbolo del sistema.
(Por supuesto, esto solo funciona si actualmente está ejecutando bash o alguna otra pieza de software que "salta al comienzo de la línea" o hace algo equivalentemente inofensivo al presionar Ctrl-a).
Solución 4:
Bueno, la mayoría del tiempo (sin que alguien intente joder las cosas) tu TERM
se establecerá en screen
(o al menos mencionar screen
en algún lugar).
La solución fácil al problema es simplemente ejecutar la pantalla en todas partes. No salgas de casa sin él, te digo.
Solución 5:
Guardo esto en mi .bashrc
:
PS1='[\[email protected]\h \W'
if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
PS1="$PS1]$"
No es infalible, pero cada vez que creo una nueva pantalla, pone el número de ventana en el aviso. Si no estoy ejecutando screen
, no hay número.