Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Scripts executes lors d'un login

5 réponses
Avatar
Remi Moyen
Bonjour,

[x-post sur fca.x11, vu que ça concerne un peu le graphique aussi, mais
fu2 sur fcolc, ça me parait plus adapté]

Quels sont les différents scripts qui sont executés/sourcés lors d'un
login ? À chaque fois ? Suivant le shell ? En console uniquement ? Sous X
? En passant par un login manager graphique (type xdm, kdm, ...) ?

Je suis un peu perdu à chaque fois que je veux faire une modif de mon
environnement, pour qu'elle s'applique uniquement au bon endroit (genre,
que ma config pour X ne s'applique pas pour un login console), et je
n'arrive pas à trouver sur le net de liste claire de à quoi sert quel
fichier.

Parmi les quelques que je connais (je mets ensemble le fichier générique
de /etc et celui spécifique à chaque utilisateur dans son /home) :
- /etc/profile et .profile sont sourcés par le shell (en tout cas par
bash). Pour certains shells, il semblerait que .login serve à ça aussi ;
- /etc/bashrc, cshrc, zshrc, et les .bashrc, ... sont sourcés au lancement
du shell de même nom ;
- .xinitrc et .xsession sont executés au login sous X. L'un des deux l'est
uniquement quand on se loggue avec un login manager graphique, je crois,
mais je ne sais plus lequel. L'autre l'est tout le temps. Y'a un
/etc/X11/Xsession qui doit correspondre, y'a-t-il un équivalent du
.xinitrc ?

Il doit m'en manquer, en particulier ceux qui correspondent à un login en
console (les équivalents de .xinitrc/.xsession).

Et tant qu'à y être, même question au logout. Je ne connais (enfin,
utilise, plutôt...) que .bash_logout, qui est bien évidemment spécifique à
bash.

Merci de vos infos !
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."

5 réponses

Avatar
Qing Liu
Remi Moyen writes:

Bonjour,


Bonsoir,

Quels sont les différents scripts qui sont executés/sourcés lors d'un
login ? À chaque fois ? Suivant le shell ? En console uniquement ? Sous X
? En passant par un login manager graphique (type xdm, kdm, ...) ?


En console c'est suivant le shell. Pour bash, man bash et chercher
la section INVOCATION.

Parmi les quelques que je connais (je mets ensemble le fichier générique
de /etc et celui spécifique à chaque utilisateur dans son /home) :
- /etc/profile et .profile sont sourcés par le shell (en tout cas par
bash). Pour certains shells, il semblerait que .login serve à ça aussi ;


Quand on se logue (login shell) oui.

- /etc/bashrc, cshrc, zshrc, et les .bashrc, ... sont sourcés au lancement
du shell de même nom ;


Pour bash et csh, oui, c'est pour les non-login shell (par exemple
au lancement d'un xterm ou si tu tapes en ligne de commande
la commande bash).

- .xinitrc et .xsession sont executés au login sous X. L'un des deux l'est
uniquement quand on se loggue avec un login manager graphique, je crois,
mais je ne sais plus lequel. L'autre l'est tout le temps. Y'a un
/etc/X11/Xsession qui doit correspondre, y'a-t-il un équivalent du
.xinitrc ?


.xinitrc pour startx et .xsession pour xdm.


Il doit m'en manquer, en particulier ceux qui correspondent à un login en
console (les équivalents de .xinitrc/.xsession).


Comment ça ? Quand tu te logues en console, c'est ~/.bash_profile
qui est lu (pour bash bien sûr)


Et tant qu'à y être, même question au logout. Je ne connais (enfin,
utilise, plutôt...) que .bash_logout, qui est bien évidemment spécifique à
bash.


.logout marche pour bash et csh. man bash et man csh toujours.

--
Liu

Avatar
Remi Moyen
On Wed, 15 Oct 2003, Qing Liu wrote:

Quels sont les différents scripts qui sont executés/sourcés lors d'un
login ? À chaque fois ? Suivant le shell ? En console uniquement ? Sous X
? En passant par un login manager graphique (type xdm, kdm, ...) ?


En console c'est suivant le shell. Pour bash, man bash et chercher
la section INVOCATION.


Oui, c'est vrai, j'aurais dû y penser. Mais a priori, ça n'est pas la
partie shell qui me gène le plus.

.xinitrc pour startx et .xsession pour xdm.


Merci. Je vais essayer de pas l'oublier, cette fois-ci :-)

Il doit m'en manquer, en particulier ceux qui correspondent à un login en
console (les équivalents de .xinitrc/.xsession).


Comment ça ? Quand tu te logues en console, c'est ~/.bash_profile
qui est lu (pour bash bien sûr)


Ah, tu veux dire qu'il n'y a pas de scripts spécifiques pour le login
console, ce sont uniquement les scripts qui correspondent au démarrage
d'un shell, c'est ça ?

Merci pour tes infos.
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."


Avatar
Qing Liu
Remi Moyen writes:

On Wed, 15 Oct 2003, Qing Liu wrote:
Comment ça ? Quand tu te logues en console, c'est ~/.bash_profile
qui est lu (pour bash bien sûr)


Ah, tu veux dire qu'il n'y a pas de scripts spécifiques pour le login
console, ce sont uniquement les scripts qui correspondent au démarrage
d'un shell, c'est ça ?


Je ne sais pas si je comprends bien la question :).
Quand on exécute un bash (pas login), {/etc, ~/.}bashrc est lu,
mais pas ~/.bash_profile ni /etc/profile. Et c'est l'inverse
quand on se logue. Voici mon .bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
startx &


--
Liu


Avatar
Remi Moyen
On Thu, 16 Oct 2003, Qing Liu wrote:

Je ne sais pas si je comprends bien la question :).


C'est pas grave, je suis pas sûr de l'avoir bien posée non plus...

Quand on exécute un bash (pas login), {/etc, ~/.}bashrc est lu,
mais pas ~/.bash_profile ni /etc/profile. Et c'est l'inverse
quand on se logue.


Hum. Donc, si j'essaye de résumer, sont lus :

- lors d'un login en console, /etc/profile, ~/.profile et ~/.bash_profile
(à adapter éventuellement suivant le shell utilisé, bien sûr) ;
- lors du lancement d'un nouveau shell, qui n'est pas un shell de login
(et donc que ce soit sous X ou en console, le shell s'en fout),
/etc/bash.bashrc (ch'uis pas sûr, mais c'est celui au nom le plus
probable) et ~/.bashrc, enfin, pour un bash bien évidemment ;

- lors d'un login par xdm, .xsession ;
- lors du lancement d'un startx, /etc/X11/xinit/xinitrc et .xinitrc ;

Quel est l'équivalent de .xsession dans /etc ? Il y a bien un
/etc/X11/Xsession (et ~/.Xsession), mais le man dit qu'il est executé lors
du démarrage d'une session X, que ce soit par startx ou xdm.

D'après le man de bash, /etc/profile et .profile sont lus par le shell, et
pas par login. Donc, si j'ai un utilisateur qui a comme programme de login
autre chose qu'un shell, ces fichiers ne seront pas lus lors du login de
cet utilisateur (sauf si cet autre chose le fait, bien sûr...) ?

Voici mon .bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
startx &


Donc dans ton cas, même si tu te loggues par ssh/telnet sur ta machine, tu
essayeras de lancer un startx ?
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."

Avatar
Qing Liu
Remi Moyen writes:

Quel est l'équivalent de .xsession dans /etc ? Il y a bien un
/etc/X11/Xsession (et ~/.Xsession), mais le man dit qu'il est executé lors
du démarrage d'une session X, que ce soit par startx ou xdm.


J'ai /etc/X11/xdm/Xsession (slackware) et /etc/X11/xinit/xinitrc.

D'après le man de bash, /etc/profile et .profile sont lus par le shell, et
pas par login. Donc, si j'ai un utilisateur qui a comme programme de login
autre chose qu'un shell, ces fichiers ne seront pas lus lors du login de
cet utilisateur (sauf si cet autre chose le fait, bien sûr...) ?


Mon /etc/../Xsession source /etc/profile.

Voici mon .bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
startx &


Donc dans ton cas, même si tu te loggues par ssh/telnet sur ta machine, tu
essayeras de lancer un startx ?


Oui et ça fait bizarre.

--
Liu