Solution 1 :
(Volé de "Comment puis-je savoir si je suis dans un écran ?" sur StackOverflow et rédigé par l'utilisateur jho. P.S. Vous ne pouvez pas voter pour un doublon sur les sites StackExchange.)
Vérifier $STY . S'il est nul, vous êtes sur un "vrai" terminal. S'il contient quelque chose, c'est le nom de l'écran dans lequel vous vous trouvez.
Si vous n'êtes pas à l'écran :
example@unixlinux.online ~ $ echo $STY
example@unixlinux.online ~ $
Si vous êtes en écran :
example@unixlinux.online ~ $ echo $STY
2026.pts-0.ip-10-0-1-71
Si vous utilisez tmux au lieu de screen, cochez également $TMUX . Pour ajouter ceci à votre invite, ajoutez ce qui suit à votre ~/.bashrc :
if [ -n "$STY" ]; then export PS1="(screen) $PS1"; fi
if [ -n "$TMUX" ]; then export PS1="(tmux) $PS1"; fi
Solution 2 :
Recherchez $STY qui fournit des détails que screen utilise pour communiquer avec lui-même ; $WINDOW sera alors le screen actuel numéro de fenêtre.
Solution 3 :
La vérification simple que j'utilise habituellement consiste simplement à appuyer sur Ctrl -un :
-
Si le curseur saute au début de la ligne , je ne suis pas à l'intérieur une session d'écran.
-
Si rien ne se passe , je sais que je suis à l'intérieur une session d'écran et que je viens d'utiliser la touche de contrôle d'écran. J'ai ensuite appuyé sur a (saut au début de la ligne), w (afficher les fenêtres d'écran actuelles) ou exécuter une autre commande d'écran "inoffensive" pour revenir à l'invite de commande.
(Bien sûr, cela ne fonctionne que si vous exécutez actuellement bash ou un autre logiciel qui "saute au début de la ligne" ou fait quelque chose d'aussi inoffensif lorsque vous appuyez sur Ctrl-a.)
Solution 4 :
Eh bien, la plupart du temps (en l'absence des tentatives de quelqu'un de visser avec des choses) votre TERM sera défini sur screen (ou au moins mentionner screen quelque part).
La solution simple au problème consiste simplement à exécuter l'écran partout. Ne quittez pas la maison sans elle, dis-je.
Solution 5 :
Je garde ça dans mon .bashrc :
PS1='[\example@unixlinux.online\h \W'
if [ "$WINDOW" ]; then PS1="$PS1 ($WINDOW)"; fi
PS1="$PS1]$"
Ce n'est pas infaillible, mais chaque fois que je crée un nouvel écran, il met le numéro de fenêtre dans l'invite.Si je n'exécute pas screen , il n'y a pas de numéro.