So führen Sie ein Bash-Skript aus, wenn Sie ein grafisches Desktop-Login verwenden

1163
Spenser Truex

Ich verwende den MATE-Desktop unter Arch Linux und habe ein Bash-Skript, das ich ausführte:

  • Konfiguriert MATE für die Arbeit mit mehreren Monitoren
  • Verbindet den PC mit dem Internet
  • Ändert meine Mausgeschwindigkeit

Ich muss dieses Skript jedes Mal manuell ausführen, wenn ich mich grafisch anmelde. Wie kann ich das automatisch machen? Ich habe folgendes versucht:

  • Skript in eine ~/.profileDatei einfügen Nichts ist passiert.
  • Skript in eine ~/.initrcDatei einfügen Nichts ist passiert.
  • Skript in eine ~/.xsessionDatei einfügen Nichts ist passiert.
  • systemd funktioniert nicht, weil es meines Wissens versucht, die Skriptfunktionen zu früh auszuführen. Sie muss nur ausgeführt werden, wenn sich der Benutzer angemeldet hat, nicht während des Startvorgangs.

Edit : Das Skript erfordert auch Root-Privilegien!

2
Ich laufe nicht mate - aber etwas ähnliches wie das Autostart-Modul von KDE könnte nützlich sein. http://superuser.com/a/809799/10165 ist ein Beispiel, in dem ich ein Xrandr-Skript mit Autostart ausführt. Mate kann es Startanwendungen nennen. Ich * habe * keinen * Kollegen-Desktop, um es zu testen und eine vollständige Antwort zu posten. Wenn also jemand dies tut und eine Antwort mit diesem posten möchte, bin ich cool. Journeyman Geek vor 7 Jahren 0
@JourneymanGeek Komischerweise führt mein Skript auch die gleichen "xrandr" -Befehle aus, die Sie in Ihrer Frage angegeben haben. Spenser Truex vor 7 Jahren 0
@JourneymanGeek Nach der Verwendung der MATE-Autostart-Anwendung muss ich leider mitteilen, dass ich beim Start manuell das Root-Kennwort eingeben muss. Spenser Truex vor 7 Jahren 0
Sie können Sudo-Berechtigungen auch für einen einzelnen Befehl erteilen. Das könnte eine bessere Idee sein. Und da es funktioniert, poste es als Antwort Journeyman Geek vor 7 Jahren 0

3 Antworten auf die Frage

1
Spenser Truex

Dank eines Kommentars von @JorneymanGeek konnte ich die MATE-Autostart-Anwendung verwenden, um das zu tun, was ich brauche. Ich habe Probleme gelöst, die mit NOPASSWD in ein Kennwort eingegeben werden müssen. Dadurch visudokann ich sudo COMMANDdie Befehlszeile ohne Kennwort aufrufen.

Dies ist im Allgemeinen eine schlechte Idee, aber es funktioniert.

0
Satya Mishra

Sie können manchmal (nicht immer) verwenden ~/.xsession, um das zu erreichen, was Sie möchten. Dies ist normalerweise sehr systemabhängig und Sie müssen möglicherweise das Startskript Ihres Systems durchsuchen. Weitere Informationen finden Sie in dieser Unix- und Linux-Stack-Exchange-Frage

Leider funktioniert ~ / .session in meinem Fall nicht. Spenser Truex vor 7 Jahren 0
@SpenserTruex Ja, es funktioniert nicht immer. Zur Bestätigung ist der Dateiname "~ / .xsession" NICHT "~ / .session". Satya Mishra vor 7 Jahren 0
es ist "~ / .xsession". Spenser Truex vor 7 Jahren 0
@SpenserTruex OK. Ich bin kein Arch-Benutzer. Nach einigen weiteren Auseinandersetzungen scheint ~ / .xprofile die [Sitzungsstartdatei] (https://wiki.archlinux.org/index.php/Xprofile) zu sein, die von den meisten modernen Display-Managern verwendet wird. Satya Mishra vor 7 Jahren 0
0
Matt

Sie können es entweder einfügen:

  • ~/.bashrc (wird ausgeführt, nachdem alle Apps initialisiert wurden)
  • /etc/rc.local (wird AS ROOT ausgeführt, nachdem alle Dienste ausgeführt wurden, aber bevor Sie sich mit Ihrem Benutzernamen anmelden.)
Gibt es eine Möglichkeit, `~ / .bashrc` als root auszuführen, um sowohl die Vorteile als auch das Ausführen von Apps zu erhalten, nachdem * und * als root initialisiert wurden? Spenser Truex vor 7 Jahren 0
Ich habe auch versucht, rc.local zu verwenden, und es werden keine Ergebnisse erzielt. Spenser Truex vor 7 Jahren 0