Je gère des ordinateurs et des comptes dans ma salle de classe, qui est un environnement CentOS 5.5. J'essaie de comprendre comment utiliser le fichier .bashrc (ou similaire) pour m'assurer qu'une tâche s'exécute lorsqu'un utilisateur se connecte via Gnome/GDM, c'est-à-dire se connecte à une session GUI, mais que cette tâche ne s'exécute pas un utilisateur se connecte via SSH ou d'autres connexions de terminal. Comment puis-je accomplir cela?Détecter une connexion graphique en Bash
Répondre
Vous devriez probablement prendre un coup d'oeil à la XDG autostart specification, qui vous permet d'avoir des applications commencent lors de la connexion de bureau. Puisque bash et autres shells ne suivent pas les spécifications XDG (évidemment, ce sont des shells UNIX, pas des DEs), vous réalisez essentiellement ce que vous cherchez, mais sans vous soucier des shells.
vérifier la valeur de $ DISPLAY
rechercher la présence de l'environnement d'affichage variable
if [ x$DISPLAY != x ] ; then
#graphical
fi
Et si quelqu'un utilise 'ssh -X'? –
Ensuite, ils ont une session graphique. –
Cela semble être la meilleure solution pour le cas général - mais dans ce cas précis, enquête sur la valeur de $ DISPLAY est probablement assez bon, et plus parcimonieuse de mon temps. –
Si vous avez déjà des fichiers .desktop pour votre application, c'est plutôt simple; il suffit d'en déposer un dans le répertoire approprié. Je ne suis pas sûr où dans le processus de connexion (GUI) un shell est engendré. Il est également assez facile de faire des choses étranges si vous utilisez les fichiers init d'un shell si l'utilisateur n'utilise pas ce shell, ou s'ils démarrent plusieurs shells. J'ai mentionné la spécification autostart parce que cela fournit une méthode déterministe: quelqu'un a déjà inventé ces roues. :-) –
Oh oui, ces roues sont intéressantes et utiles. Mais je peux sortir avec la version rapide et sale parce que mon cas d'utilisation implique des utilisateurs qui seraient probablement chanceux de distinguer le shell bash d'un shell conch. –