So führen Sie bei der Anmeldung bei Ubuntu automatisch ein Shell-Skript aus

14

Wie kann ich ein Skript automatisch ausführen lassen, wenn ich mich anmelde? Nicht beim Starten der Maschine und nicht für alle Benutzer, sondern nur, wenn ich mich (oder ein bestimmter Benutzer mit dem Skript) über die GNOME-Benutzeroberfläche anmelde.

Nach dem Lesen an anderer Stelle dachte ich, es sei .bash_profilein meinem Home-Verzeichnis, aber für mich hat es keine Wirkung. Wenn ich es manuell in einem Terminalfenster durch Eingabe ausführe, ~/.bash_profilefunktioniert es, aber es wird nicht automatisch ausgeführt, wenn ich mich anmelde.

Ich verwende Ubuntu 11.04. Die Dateiberechtigung für mein .bash_profile ist -rwx------. In meinem Home-Verzeichnis war kein .bash_profile vorhanden, bevor ich es heute erstellt habe.

Ich erinnere mich an ältere Linux-Versionen mit einer .profileDatei für jeden Benutzer, aber das funktioniert auch nicht.

Wie wird es gemacht? Muss ich noch etwas konfigurieren, damit das .bash_profile funktioniert? Oder muss sich das Anmeldeskript pro Benutzer in einer anderen Datei befinden?

Mike Rowave
quelle
.bash_profile, .profile und .bashrc (welche tatsächlich von Ubuntu verwendet werden) werden jedes Mal geladen, wenn Sie ein Bash-Terminal öffnen. Eigentlich bin ich mir nicht sicher, ob sie geladen werden, wenn Sie sich nur bei GDM anmelden.
Juan Sebastian Totero
Das Posten Ihrer Ubuntu-Version könnte helfen. In Ubuntu 10.10 funktioniert .bashrc "für mich (TM)".
Vlueboy
Meinen Sie, wenn Sie sich in der GUI oder in der Shell anmelden?
Flimzy
Bash lädt sie, wenn Sie eine neue Shell starten. Sie werden also nur geladen, wenn Sie ein Terminalfenster öffnen oder sich bei einem virtuellen Terminal anmelden, nicht, wenn Sie sich bei Gnome (GDM) anmelden.
Shiftycow
Ich benutze Ubuntu 11.04, wie ich in der ursprünglichen Frage erwähnt habe.
Mike Rowave

Antworten:

11

Sie können einfach den folgenden Befehl unter System> Einstellungen> Startanwendungen hinzufügen:

bash /full/path/to/your/script.sh

Das sollte den Trick machen;)

Juan Sebastian Totero
quelle
Weißt du was, das habe ich schon mal gemacht und es hat nicht funktioniert ... außer, dass ich nicht "bash" vor dem Pfad des Skripts geschrieben habe! Ich werde es später mit der Bash versuchen. Aus Neugier, wenn Sie etwas über die GUI in Startup Applications eingeben, in welcher Datei ist es registriert?
Mike Rowave
Startup - Programme sollten in/etc/xdg/autostart
shiftycow am
Hinzufügen bash /home/myusername/scriptnamezu "Startup Applications" hat funktioniert! Vielen Dank. Dies könnte jedoch spezifisch für GNOME unter Ubuntu sein. Deshalb habe ich mich gefragt, wo die Einträge in diesem Menüpunkt "Startup Applications" (Startanwendungen) registriert sind, da dies in anderen modernen Linux-Versionen wahrscheinlich ähnlicher ist.
Mike Rowave
2
/etc/xdg/autostartscheint eine systemweite Datei zu sein, die nicht benutzerspezifisch ist.
Mike Rowave
Für spätere Versionen von Ubuntu siehe askubuntu.com/questions/159887/…
TooTone
8

Erstellen Sie daher, wie von nodiscc vorgeschlagen, einen Desktop- Starter : ~ / .config / autostart / script.desktop mit folgendem Inhalt:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=autostart
Icon=system-run
X-GNOME-Autostart-enabled=true

Dann erstelle das Autostart-Skript: ~ / bin / autostart mit deinem Bash-Inhalt:

#!/bin/bash
# Execute bash script below

Stellen Sie sicher, dass ~ / bin / autostart ausführbar ist

Bert Regelink
quelle
5

Sie können eine Zeile in crontab hinzufügen -

crontab -e

Fügen Sie dann diese Zeile zu der Datei hinzu, die sich öffnet:

@reboot /path/to/your/cool/script

Dadurch wird das Skript beim Neustart ausgeführt. Weitere Details finden Sie unterman crontab

inLoveWithPython
quelle
Ich weiß nicht warum, aber ich kann keine .sh-Dateien auf "Anwendungen starten" ausführen. Daher ist cron
Albert Català
1

Versuchen Sie es ~/.xinitrc(einige Informationen hier: https://wiki.archlinux.org/index.php/Xinitrc ). Denken Sie daran, dass alles, was Sie in diesem Skript starten, im Hintergrund gestartet / ausgeführt werden sollte, da dies die X-Anmeldung beeinträchtigen könnte.

Slartibartfast
quelle
-1

Erweiterung @JuanSebastianTotero Antwort .

Anstatt von:

bash /full/path/to/your/script.sh

Versuchen

sh /full/path/to/your/script.sh

bashhat nicht für mich auf Ubuntu 13.04und 14.04. Tut es shaber.

Rahil Wazir
quelle