5 votes

Comment détecter si je suis dans une fenêtre de terminal bash Shell ou GUI 'plein écran' ?

J'ai du code dans mon .bashrc qui définit le titre de la fenêtre du terminal en utilisant la commande en cours d'exécution et qui fonctionne parfaitement dans Unity, où le terminal est dans une fenêtre. Cependant, lorsque je me connecte avec la commande Ctrl + Alt + F1 (quel que soit son nom), mon prompt est rempli de déchets qui sont diverses séquences d'échappement qui définissent le titre (inexistant) de la fenêtre.

Comment puis-je détecter à partir d'un script bash si je suis dans l'un ou l'autre ?

5voto

Radu Rădeanu Points 156862

Si vous êtes dans une fenêtre de terminal GUI, vous n'êtes pas dans un Shell de connexion. Et si vous êtes dans un tty, vous êtes bien dans un login Shell. Pour tester cela, vous pouvez utiliser :

shopt -q login_shell && echo 'Login shell' || echo 'Not login shell'

ou, plus simplement :

shopt | grep login

Exemple à utiliser dans un if déclaration :

login_shell=$(shopt | grep login | cut -f2)
if [ "$login_shell" = "on" ]; then 
    echo 'Login shell'
    # do stuff in login shell
else
    echo 'Not login shell'
    # do stuff in non login shell
fi

5voto

thom Points 6932

Il n'y a rien de plus simple :

echo "$TERM"

si le résultat est "xterm", vous êtes dans une fenêtre de terminal
si le résultat est "linux", vous êtes dans un terminal virtuel (Ctrl-Alt-F1)

0voto

rackandboneman Points 331

Dans une fenêtre de terminal d'une session X11, la variable d'environnement DISPLAY est généralement définie (sauf dans certains cas où su est utilisé) ; ce n'est généralement pas le cas dans une console.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X