Risposte:
~/.xinitrc
viene eseguito da xinit
, che di solito viene invocato tramite startx
. Questo programma viene eseguito dopo l'accesso: prima si accede a una console di testo, quindi si avvia la GUI con startx
. Il ruolo di .xinitrc
è quello di avviare la parte della GUI della sessione, in genere impostando alcune impostazioni relative alla GUI come le associazioni di tasti (con xmodmap
o xkbcomp
), risorse X (con xrdb
), ecc., E per avviare un gestore di sessioni o un gestore di finestre ( possibilmente come parte di un ambiente desktop).
~/.xsession
viene eseguito quando si accede in modalità grafica (su un display manager ) e il display manager richiama il tipo di sessione "personalizzata". (Con lo storico display manager xdm, .xsession
viene sempre eseguito, ma con i moderni display manager che offrono all'utente una scelta del tipo di sessione, di solito è necessario selezionare "personalizzato" per .xsession
l'esecuzione.) Il suo ruolo è sia quello di impostare i parametri del tempo di accesso (come le variabili di ambiente) e per avviare la sessione della GUI. Un tipico .xsession
è
#!/bin/sh
. ~/.profile
. ~/.xinitrc
~/.xsessionrc
viene eseguito su Debian (e derivati come Ubuntu, Linux Mint, ecc.) dagli script di avvio X su un login GUI, per tutti i tipi di sessione e (penso) da tutti i gestori di display. Viene anche eseguito startx
se l'utente non ha un .xinitrc
, perché in tal caso startx
ricade sugli stessi script di avvio della sessione utilizzati per l'accesso alla GUI. Viene eseguito relativamente presto, dopo aver caricato le risorse ma prima di avviare qualsiasi programma come un key agent, un demone D-Bus, ecc. In genere imposta variabili che possono essere utilizzate dagli script di avvio successivi. Non ha alcuna documentazione ufficiale che io conosca, devi scavare nella fonte per vedere cosa funziona.
.xinitrc
e .xsession
sono caratteristiche storiche del sistema X11 Window, quindi dovrebbero essere disponibili e avere un comportamento simile su tutti i sistemi Unix. D'altra parte, .xsessionrc
c'è una funzione Debian e le distribuzioni che non sono basate su Debian non ce l'hanno a meno che non abbiano implementato qualcosa di simile.
.xprofile
è molto simile a .xsessionrc
, ma fa parte dello script di avvio della sessione di GDM (il display manager GNOME), quindi viene letto solo se si accede con GDM.
Secondo un'altra discussione, startx + ~ / .xsession e no ~ / .xinitrc, si traducono in funzionalità ridotte (xfce4, sid)
Innanzitutto:
.xsessionrc
serve per contenere le variabili di ambiente globali . L'enfasi è mia.In secondo luogo:
40x11-common_xsessionrc
in/etc/X11/Xsession.d
è di provenienza precedente50x11-common_determine-startup
. Quindi.xsessionrc
viene letto prima.xsession
e tutte le variabili d'ambiente impostate saranno disponibili per le applicazioni eseguite dai comandi in.xsession
.
Ulteriori letture: