In Linux-Desktopsystemen möchte ich einen Befehl ausführen, wenn sich der Benutzer anmeldet.
Nachdem ich einige andere Beiträge gelesen hatte, habe ich versucht, den Befehl einzufügen, ~/.bashrc
aber erfolglos. Darüber hinaus verwendet das System eine grafische Oberfläche für die Benutzeranmeldung, sodass der Befehl nicht mit dem Start einer Shell verknüpft sein sollte.
Ich habe auch versucht, den Befehl an eines der in enthaltenen Skripte anzuhängen, /etc/profile.d
ohne Ergebnisse.
Gibt es eine andere Möglichkeit, dies zu tun? Gibt es eine Datei, die das System nach dem Login liest?
Antworten:
Es kann nicht garantiert werden, dass der grafische Anzeigemanager die klassischen Startdateien liest. Dies ändert sich zwischen Verteilungen und zwischen Display-Managern. Eine der folgenden Möglichkeiten sollte jedoch funktionieren.
Verwenden Sie die native Methode Ihrer Desktop-Umgebung, um Startanwendungen festzulegen. Die Details hängen von dem DE ab, das Sie verwenden. Sie können jedoch ein Skript erstellen, das Ihren Befehl ausführt, und es der Liste der Startanwendungen hinzufügen. Auf meinem System (Cinnamon) können Sie dies beispielsweise über "Systemeinstellungen" => "Startanwendungen" tun.
Verwendung
~/.xprofile
, dies wird von mindestens den GDM-, LDM-, LightDM- und LXDM-Anmeldemanagern bereitgestellt.Wenn keines der oben genannten Verfahren funktioniert, fügen Sie den Befehl hinzu zu
~/.profile
: Dies ist die Hauptinitialisierungsdatei für Anmeldeshells und wird beim Anmelden auch von einigen grafischen Shells gelesen.Wie @derobert in den Kommentaren ausführte, können Sie auch die kostenlosen Desktop-Standards verwenden :
Das
~/.bashrc
ist hier völlig irrelevant, es wird nur von interaktiven Nicht-Login-Shells gelesen, wird also auf Login-Shells ignoriert, grafisch oder nicht.quelle
~/.config/autostart
und/etc/xdg/autostart/
welches sind die Standardspeicherorte gemäß der Desktop Application Autostart Specification . Und auch/etc/X11/Xsession.d
und~/.xsession
.Eine weitere Option ist die Verwendung von pam. Auf diese Weise können Sie präzise Anmeldeaktionen definieren.
Für eine allgemeine Aktion können Sie sich auf pam_exec verlassen ( http://manpages.ubuntu.com/manpages/hardy/man8/pam_exec.8.html ). Wenn Sie jedoch eine spezifischere Aktion auf sichere Weise ausführen müssen, gibt es möglicherweise speziellere Pam-Module, die besser passen, z. B. pam_mount (für Mounts bei Anmeldung - http: //manpages.ubuntu). com / manpages / hardy / man8 / pam_mount.8.html ) oder pam_echo (für beliebige Nachrichten an Benutzer - http://manpages.ubuntu.com/manpages/hardy/man8/pam_echo.8.html ).
Im Allgemeinen ist pam ein sehr übersichtliches System zum Anpassen von Anmeldungen. Sie sollten sich also ein bisschen mehr damit befassen, anstatt sich auf potenziell unsichere Skripte zu verlassen, wie andere vorgeschlagen hatten.
Beispiel
Bei einem ziemlich typischen /etc/pam.d/system-auth können wir pam_exec nach der Anmeldung folgendermaßen einsetzen:
Wo
/usr/local/bin/my_prog
wird ein beliebiges Programm nach einer erfolgreichen Benutzeranmeldung ausgeführt.quelle
pam
Konfiguration hinzufügen würden, da dies nicht trivial ist.Zu diesem Thema: Befehl nach Anmeldung automatisch ausführen?
Sie haben die Lösung der
.bashrc
(nicht was Sie brauchen) und die Lösung der Startup-Anwendungen. Ich zitiere Daniel S .:quelle