[tty] .bashrc de root ne se charge pas (résolu)
[tty] .bashrc de root ne se charge pas (résolu)
Bonjour,
Un comportement surprenant en root en tty : le .bashrc semble ne pas se charger. Symptômes : pas de coloration du prompt, alias usuels non opérationnels
Cas testés :
— tty + root : .bashrc semble ne pas être chargé
— tty + user : prompt coloré + alias ok
— X + user : prompt coloré + alias ok
— X + user + su pour se connecter en root : prompt coloré + alias ok
— ssh sur le RPi en tant qu'user : prompt coloré + alias ok
— ssh sur le RPi en tant qu'user, puis su pour se connecter en root : prompt coloré + alias ok
— ssh sur le RPi en tant que root¹ : .bashrc semble ne pas être chargé
(le comportement tty est valable sur mon PC fixe/archlinux et mon RPi/archlinuxarm)
C'est tout de même curieux ce comportement. Quelqu'un pourait-il m'éclairer sur ce comportement ?
______________________________________________________
¹ : il faut que je configure ssh pour interdire cela
Un comportement surprenant en root en tty : le .bashrc semble ne pas se charger. Symptômes : pas de coloration du prompt, alias usuels non opérationnels
Cas testés :
— tty + root : .bashrc semble ne pas être chargé
— tty + user : prompt coloré + alias ok
— X + user : prompt coloré + alias ok
— X + user + su pour se connecter en root : prompt coloré + alias ok
— ssh sur le RPi en tant qu'user : prompt coloré + alias ok
— ssh sur le RPi en tant qu'user, puis su pour se connecter en root : prompt coloré + alias ok
— ssh sur le RPi en tant que root¹ : .bashrc semble ne pas être chargé
(le comportement tty est valable sur mon PC fixe/archlinux et mon RPi/archlinuxarm)
C'est tout de même curieux ce comportement. Quelqu'un pourait-il m'éclairer sur ce comportement ?
______________________________________________________
¹ : il faut que je configure ssh pour interdire cela
Dernière modification par bobo le lun. 29 sept. 2014, 23:36, modifié 1 fois.
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17617
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [tty] .bashrc de root ne se charge pas
Depuis le tty en root :
Code : Tout sélectionner
echo $SHELL
echo $HOME
cat /root/.bash_profile
head /root/.bashrc
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [tty] .bashrc de root ne se charge pas
Code : Tout sélectionner
[root@rpi etc]# echo $SHELL
/bin/bash
[root@rpi etc]# echo $HOME
/root
[root@rpi etc]# cat /root/.bash
.bash_history .bashrc
[root@rpi etc]# cat /root/.bash_profile
cat: /root/.bash_profile: No such file or directory
[root@rpi etc]# head /root/.bashrc
# Gestion du ls : couleur + touche pas aux accents
alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars --human-readable'
alias la="ls -a --color"
alias ll="ls -l --color"
alias lla="ls -al --color"
# bridage du rm
alias rm='rm -i'
# Quelques alias pratiques

Édition :
En copiant celui du compte utilisateur dans /root, .bashrc est chargé. Maintenant j'aurais plusieurs questions :
— je n'ai jamais créé de .bash_profile, comment se fait-il que mon profil utilisateur en soit doté ?
— comment se fait-il que ce mécanisme ne fonctionne pas pour root ?
— c'est quoi un fichier .bash_profile ?
(je vais un peu lire le « man bash »)
Édition 2 : (après lecture de « man bash »)
Au vu de l'importance du fichier .bash_profile, et de ce que dit la section INVOCATION, il s'agit d'un shell interactif. Premièrement /etc/profile est chargé, ensuite bash recherche dans l'ordre les fichiers ~/.bash_profile, ~/.bash_login, ~/.profile. Le premier accessible en lecture est utilisé.
Code : Tout sélectionner
cat ~/.bash_profile
#
# ~/.bash_profile
#
[[ -f ~/.bashrc ]] && . ~/.bashrc

— je n'ai jamais créé de .bash_profile, comment se fait-il que mon profil utilisateur en soit doté ?
— comment se fait-il que ce mécanisme ne fonctionne pas pour root ?
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17617
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [tty] .bashrc de root ne se charge pas
En gros c'est normal que ~/.bashrc ne soit pas lu pour un shell de login (la connexion via un tty est un shell de login)When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.
Lors de la création d'un utilisateur, le contenu de ce dossier est copié :bobo a écrit :je n'ai jamais créé de .bash_profile, comment se fait-il que mon profil utilisateur en soit doté ?
Code : Tout sélectionner
ls -a /etc/skel
Je ne comprends pas ta question. Tout fonctionne comme cela devrait fonctionner.bobo a écrit :comment se fait-il que ce mécanisme ne fonctionne pas pour root ?
Rien d'obscure. Ceci : "bobo a écrit :la syntaxe est obscure « [-f ~/.bashrc] » ressemblant à une condition de if
[[ -f ~/.bashrc ]]
" est une condition qui exprime : si le fichier suivant existe alors retourne "vrai". La partie suivante : "&&
", est un opérateur conditionnel, si la partie à gauche est vrai alors on exécute la partie à droite. Et finalement : ". ~/.bashrc
", ceci exprime tout simplement l'inclusion/la lecture du fichier .bashrc
Bref, il suffit de faire en root :
Code : Tout sélectionner
cp /etc/skel/.bash_profile /root/
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [tty] .bashrc de root ne se charge pas
Merci pour les explications !
je n'avais pas pensé au /etc/skel.
Dernier point :

Voici ce que je comprends de tes explications : l'« utilisateur » root existe après l'installation, le contenu de /etc/skel n'est donc pas utilisé pour générer le contenu de /root, donc pas de /root/.bash_profile. Ma question paraît alors absurdebenjarobin a écrit :Je ne comprends pas ta question. Tout fonctionne comme cela devrait fonctionner.bobo a écrit :comment se fait-il que ce mécanisme ne fonctionne pas pour root ?

Dernier point :
Il se trouve qu'en faisant une copie de .bash_profile dans /root, en me logguant en root par tty j'ai la coloration du prompt et les alias. J'en déduirais que la connection via un tty est un shell interactif.benjarobin a écrit :En gros c'est normal que ~/.bashrc ne soit pas lu pour un shell de login (la connexion via un tty est un shell de login)
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17617
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [tty] .bashrc de root ne se charge pas (résolu)
Depuis un tty tu as un shell de login. Et en effet le fichier .bashrc n'est pas lu, mais à la place c'est le .bash_profile. Ici l'astuce est d'inclure le fichier .bashrc quand on lit le .bash_profile. Ainsi le comportement est le même quelque soit la façon dont est lancé bash.
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum