Quelques-uns de mes scripts (changement de mappage de touches, ajout de clés publiques) doivent agir différemment dans une console virtuelle et dans un xterm. À quoi sert le vrai code
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Quelques-uns de mes scripts (changement de mappage de touches, ajout de clés publiques) doivent agir différemment dans une console virtuelle et dans un xterm. À quoi sert le vrai code
#!/bin/ksh
if [[ in_a_virtual_console ]]; then
...
else
...
fi
Réponses:
Il me semble que vous souhaitez vérifier s'il existe ou non un serveur X auquel se connecter.
Quelque chose comme:
if [ -n "$DISPLAY" ]; then
: X
else
: no X
fi
Si vous vouliez distinguer les shells interactifs des shells non interactifs, utilisez test
le support intégré de pour le détecter (vous ne savez pas si ksh l'a, mais le binaire de coreutils le prend également en charge):
test -t 0 # will return 0 for interactive shells
Si vous vouliez vraiment savoir si vous êtes sur un tty / pty / pts ou autre chose, analysez la sortie de tty
:
$ tty # konsole
/dev/pts/4
$ tty # virtual terminal
/dev/tty2
Cela dépendra du système d'exploitation. Pour Linux, vous pouvez faire ceci:
#!/bin/ksh
if [ "$TERM" == "linux" ]; then
echo "I'm in a virtual console"
else
echo "I'm not in a virtual console"
fi
Bien entendu, cela suppose que vous n'avez pas modifié la TERM
variable d'environnement vous-même, qui est automatiquement définie sur linux
uniquement lorsque vous vous connectez à une console virtuelle (sous Ubuntu, elle est définie sur xterm
dans les applications de console, mais cela peut varier selon les systèmes d'exploitation). Vérifiez le contenu de TERM dans les différentes applications que vous utilisez et définissez-les comme il convient.