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 :
[email protected] ~ $ echo $STY
[email protected] ~ $
Si vous êtes en écran :
[email protected] ~ $ 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='[\[email protected]\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.