linux:ytvi_autostart_in_linux
This is an old revision of the document!
Table of Contents
YTVI Autostart in Linux
Autostart-Dateien und Mechanismen unter Debian/Ubuntu
Übersicht
Datei / Mechanismus | Startzeitpunkt | Benutzerbereich | Kontext (Konsole oder X) | Ruft andere Skripte auf | Besonderheiten und Hinweise | Beispiele für typische Einträge |
---|---|---|---|---|---|---|
/etc/profile | Login-Shell | Global (Alle Benutzer) | Konsole (Bash/Zsh) | Ruft /etc/profile.d/* auf | Diese Datei wird bei der Anmeldung eines Benutzers (Login-Shell) ausgeführt. Sie wird bei Terminal-Anmeldung oder SSH verwendet, aber nicht bei X-Session-Starts. Standardmäßig für systemweite Umgebungsvariablen geeignet. | Setzen von systemweiten Umgebungsvariablen (export PATH=… ) |
~/.profile | Login-Shell | Spezifisch für den Benutzer | Konsole und X | Ruft ~/.bash_profile oder ~/.bashrc auf (abhängig von der Konfiguration) | Wird bei der Anmeldung mit einer Login-Shell oder bei X-Anmeldung verwendet. Wird oft verwendet, um benutzerspezifische Umgebungsvariablen zu setzen. In Bash ist .profile die Standarddatei für Login-Shells. Wird von Bash, Dash und möglicherweise auch X-Session gelesen. | Setzen von benutzerspezifischen Aliases und Umgebungsvariablen Starten von Programmen (eval $(ssh-agent -s)) |
~/.bashrc | Nicht-Login-Shell | Spezifisch für den Benutzer | Konsole (Bash) | Wird durch ~/.profile aufgerufen, wenn es eine Login-Shell ist | Diese Datei wird bei jedem Start einer neuen nicht-Login-Bash-Shell ausgeführt. Üblicherweise für Terminal-Fenster und interaktive Shells verwendet, jedoch nicht für grafische Sitzungen oder Login-Shells. | Aliases (alias ll='ls -la ') und benutzerspezifische Funktionen |
~/.zshrc | Nicht-Login-Shell | Spezifisch für den Benutzer | Konsole (Zsh) | - | Ähnlich wie .bashrc , jedoch für die Zsh-Shell. Wird jedes Mal ausgeführt, wenn eine Zsh-Instanz gestartet wird (nicht-Login-Shell). | Aliases und benutzerspezifische Zsh-Einstellungen |
/etc/rc.local | Systemstart (letzte Phase) | Global (Alle Benutzer) | Nicht spezifiziert (Systemebene) | - | Diese Datei wird in der letzten Phase des Systemstarts ausgeführt. Sie eignet sich, um systemweite Dienste oder Befehle auszuführen. Seit neueren Versionen von Debian/Ubuntu kann es sein, dass /etc/rc.local standardmäßig deaktiviert ist. Man kann sie manuell aktivieren. Wird als root ausgeführt, da es Teil des Systemstarts ist. | Starten von benutzerdefinierten Diensten (/usr/bin/mein_dienst & ) |
/etc/X11/Xsession | Start der X-Sitzung | Global (Alle Benutzer) | X (Grafische Umgebung) | Ruft benutzerspezifische ~/.xsession auf (falls vorhanden) | Diese Datei wird verwendet, um die X-Session (Grafiksession) zu initialisieren. Sie ist ein zentraler Punkt für die Konfiguration der X-Sitzung und wird vor der Ausführung von Desktop-Umgebungen (wie GNOME oder KDE) aufgerufen. | Setzen von Umgebungsvariablen für X (export GTK_THEME=… ) |
~/.xinitrc | Start von X via startx | Spezifisch für den Benutzer | X (Grafische Umgebung) | - | Diese Datei wird verwendet, wenn ein Benutzer den X-Server mit dem Befehl startx startet. Typischerweise für Benutzer, die keine Display-Manager wie gdm oder lightdm verwenden. | Starten des Fenstermanagers (exec i3 ) |
~/.xsession | Login über Display-Manager | Spezifisch für den Benutzer | X (Grafische Umgebung) | - | Diese Datei wird ausgeführt, wenn der Benutzer sich über einen Display-Manager (z.B. gdm oder lightdm ) anmeldet. Sie ermöglicht benutzerspezifische Konfigurationen für die grafische Session. | Setzen von benutzerspezifischen Umgebungsvariablen |
/etc/init.d/* (SysV) | Systemstart | Global (Alle Benutzer) | Nicht spezifiziert (Systemebene) | - | Wird verwendet, um systemweite Dienste zu starten. Veraltet zugunsten von systemd, aber immer noch in Verwendung bei älteren Systemen. | Starten eines systemweiten Dienstes (/etc/init.d/apache2 start ) |
systemd Units (/etc/systemd/system/*) | Systemstart / Benutzeranmeldung | Global oder Benutzerabhängig (je nach Konfiguration) | Nicht spezifiziert (Systemebene) | Kann andere Units oder Skripte per ExecStart aufrufen | Systemd ist der aktuelle Standard für den Dienststart auf modernen Debian/Ubuntu-Systemen. Man kann eigene Units definieren, die Programme oder Skripte bei Systemstart oder bei Benutzeranmeldungen ausführen. | Definieren eines Dienstes (ExecStart=/usr/bin/mein_dienst ) |
~/.config/autostart/*.desktop | Login der grafischen Session | Spezifisch für den Benutzer | X (Grafische Umgebung) | - | Diese Methode wird verwendet, um Anwendungen automatisch beim Start der grafischen Desktop-Umgebung (wie GNOME oder KDE) zu starten. Dateien im .desktop -Format definieren, welche Programme gestartet werden sollen. | Starten einer Anwendung (Exec=/usr/bin/firefox ) |
/etc/xdg/autostart/*.desktop | Login der grafischen Session | Global (Alle Benutzer) | X (Grafische Umgebung) | - | Ähnlich wie ~/.config/autostart , aber systemweit für alle Benutzer. Diese Methode wird ebenfalls von Desktop-Umgebungen genutzt, um Programme automatisch zu starten. | Starten einer systemweiten Anwendung (Exec=/usr/bin/gnome-shell ) |
Hinweise
1. Unterschied Login-Shell vs. Nicht-Login-Shell:
- Eine Login-Shell ist die erste Shell, die gestartet wird, wenn ein Benutzer sich im System anmeldet (z.B. über SSH oder die Konsole).
- Eine Nicht-Login-Shell wird beispielsweise durch das Starten eines Terminal-Fensters aus einer bestehenden Sitzung heraus geöffnet.
2. Global vs. Benutzerspezifisch:
- Dateien unter
/etc/
sind normalerweise global, d.h. sie gelten für alle Benutzer. - Dateien in den Home-Verzeichnissen (
~/.bashrc
,~/.profile
etc.) gelten nur für den spezifischen Benutzer.
3. Grafische Umgebung vs. Konsole:
- Einige dieser Dateien sind speziell für die grafische Umgebung (X) gedacht (
~/.xinitrc
,~/.xsession
,~/.config/autostart/
). - Andere wiederum sind speziell für Shell-Sitzungen (Login und Nicht-Login) gedacht (
~/.bashrc
,/etc/profile
).
4. Systemd für modernere Verwaltung:
- Neuere Versionen von Debian/Ubuntu setzen hauptsächlich auf
systemd
, um Startprozesse zu verwalten. Man kann dafür eigene “Service”-Dateien erstellen, um Programme beim Systemstart oder bei Benutzeranmeldungen auszuführen.
5. .desktop-Dateien für die grafische Umgebung:
.desktop
-Dateien, die in den Autostart-Ordnern (~/.config/autostart/
oder/etc/xdg/autostart/
) gespeichert werden, dienen dazu, Anwendungen automatisch beim Login in einer grafischen Session zu starten. Diese Methode ist besonders praktisch für Anwendungen mit GUI.
zeitlichen Abfolge
Systemstart | |-- `/etc/init.d/*` (SysV) oder `systemd` Units (`/etc/systemd/system/*`) | | | |-- `/etc/rc.local` (letzte Phase des Systemstarts) | Benutzeranmeldung (Login-Shell) | |-- `/etc/profile` | | | |-- `/etc/profile.d/*` | |-- `~/.profile` | |-- Ruft ggf. `~/.bash_profile` oder `~/.bashrc` auf
Start von nicht-Login-Shell (z.B. neues Terminal) | |-- `~/.bashrc` (für Bash) |-- `~/.zshrc` (für Zsh)
Start der grafischen Umgebung (X-Session) | |-- `/etc/X11/Xsession` | | | |-- Ruft ggf. `~/.xsession` auf | |-- `~/.xinitrc` (bei Start mit `startx`) |-- `~/.xsession` (bei Anmeldung über Display-Manager) | |-- `/etc/xdg/autostart/*.desktop` (systemweit für alle Benutzer) |-- `~/.config/autostart/*.desktop` (benutzerspezifisch)
Beispiel-Szenarien
1. Skript systemweit beim Booten ausführen:
- Verwenden Sie `/etc/rc.local` oder erstellen Sie eine `systemd` Unit, um ein Skript auszuführen, bevor Benutzer sich anmelden.
2. Umgebungsvariablen für alle Benutzer setzen:
- Verwenden Sie `/etc/profile`, wenn es systemweite Variablen betrifft, oder `~/.profile` für spezifische Benutzer.
3. Programm für grafische Sitzung eines Benutzers starten:
- Platzieren Sie eine `.desktop`-Datei in `~/.config/autostart/`, um sicherzustellen, dass das Programm automatisch beim Anmelden an die grafische Benutzeroberfläche gestartet wird.
linux/ytvi_autostart_in_linux.1728797946.txt.gz · Last modified: by dominik