Dans le système de bureau Linux, je veux exécuter une commande lorsque l'utilisateur se connecte.
Après avoir lu quelques autres articles, j'ai essayé d'insérer la commande ~/.bashrc
mais sans succès. De plus, le système utilise une interface graphique pour la connexion de l'utilisateur, donc la commande ne doit pas être liée au démarrage d'un shell.
J'ai également essayé d'ajouter la commande à l'un des scripts contenus dans /etc/profile.d
sans résultat.
Y a-t-il une autre façon de procéder? Tout fichier que le système lit après la connexion?
Réponses:
Il n'y a aucune garantie que le gestionnaire d'affichage graphique lira les fichiers de démarrage classiques. Cela change entre les distributions et entre les gestionnaires d'affichage. Cependant, l'un des éléments suivants devrait fonctionner.
Utilisez la méthode native de votre environnement de bureau pour définir les applications de démarrage. Les détails dépendent du DE que vous utilisez, mais vous pouvez créer un script qui exécute votre commande et l'ajouter à la liste des applications de démarrage. Par exemple, sur mon système (Cinnamon), vous pouvez le faire via "Paramètres système" => "Applications de démarrage".
Utilisez
~/.xprofile
, cela provient au moins des gestionnaires de connexion GDM, LDM, LightDM et LXDM.Si aucun des éléments ci-dessus ne fonctionne, essayez d'ajouter la commande à
~/.profile
: Il s'agit du fichier d'initialisation principal pour les shells de connexion et est également lu par certains shells graphiques lors de la connexion.Comme @derobert l'a souligné dans les commentaires, vous pouvez également utiliser les normes de bureau gratuites :
Le
~/.bashrc
est totalement hors de propos ici, il n'est lu que par des shells interactifs sans connexion, il est donc ignoré sur les shells de connexion, graphiques ou non.la source
~/.config/autostart
et/etc/xdg/autostart/
quels sont les emplacements standard selon la spécification de démarrage automatique de l'application de bureau . Et aussi/etc/X11/Xsession.d
et~/.xsession
.Une autre option consiste à utiliser pam - cela vous donnera un moyen précis de définir des actions à la connexion.
Pour une action générique, vous pouvez compter sur pam_exec ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ). Cependant, si vous devez effectuer une action plus spécifique de manière sûre, il peut exister des modules pam plus spécialisés qui conviendront mieux, tels que pam_mount couramment utilisé (pour les montages à la connexion - http: //manpages.ubuntu. com / manpages / hardy / man8 / pam_mount.8.html ) ou pam_echo (pour les messages arbitraires aux utilisateurs - http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo.8.html ).
En général, pam est un système très soigné pour personnaliser les connexions, donc vous voudrez peut-être y réfléchir un peu plus, au lieu de vous fier à des scripts potentiellement dangereux, comme d'autres l'avaient suggéré.
Exemple
Étant donné un /etc/pam.d/system-auth assez typique, nous pouvons utiliser pam_exec après la connexion comme ceci:
où
/usr/local/bin/my_prog
est le programme arbitraire exécuté après une connexion utilisateur réussie.la source
pam
configuration, car cela n'est pas trivial.Selon ce sujet: Exécuter la commande automatiquement après la connexion?
Vous avez la solution du
.bashrc
(pas ce dont vous avez besoin) et la solution des applications de démarrage. Je cite Daniel S .:la source