"Un shell de connexion interactif est lancé après une connexion réussie, en utilisant / bin / login, en lisant le fichier / etc / passwd. Cette invocation de shell lit normalement / etc / profile et son équivalent privé ~ / .bash_profile au démarrage.
Un shell interactif sans connexion est normalement démarré sur la ligne de commande à l'aide d'un programme shell (par exemple, [prompt] $ / bin / bash) ou par la commande / bin / su. Un shell interactif sans connexion est également démarré avec un programme terminal tel que xterm ou konsole à partir d'un environnement graphique. Ce type d’appel de shell copie normalement l’environnement parent, puis lit le fichier ~ / .bashrc de l’utilisateur pour des instructions de configuration de démarrage supplémentaires. "
Http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html
Par conséquent, je ne mettrais pas de variables d’environnement dans bashrc, car cela va non seulement à l’encontre des conventions courantes, mais vous manquerez également de vos variables bashrc lors de l’appel d’un terminal à partir d’un environnement graphique de bureau.
Sur Redhat dans le /etc/profile
j'ai trouvé ce commentaire:
"Les alias et les fonctions à l’échelle du système doivent aller dans / etc / bashrc. Les variables d’environnement personnel et les programmes de démarrage doivent aller dans ~ / .bash_profile. Les alias et fonctions personnels doivent aller dans ~ / .bashrc."
Par conséquent, si vous souhaitez définir des variables d'environnement utilisateur par utilisateur, faites-le dans le fichier .bash_profile de l'utilisateur.
En .bash_profile
me dirigeant vers le je lis:
"Variables d’environnement personnel et programmes de démarrage.
Les alias personnels et les fonctions doivent aller dans ~ / .bashrc. Les variables d'environnement et les programmes de démarrage du système sont dans / etc / profile. Les alias et les fonctions à l’échelle du système se trouvent dans / etc / bashrc. "
Conclusion
Si vous voulez que seul root voie les programmes, par exemple, dans / sbin
I, ajoutez ce chemin au .bash_profile
fichier de root . Mais si vous voulez que chaque utilisateur de voir quels programmes sont installés sur la racine de votre boîte , je mettrais /sbin
en /etc/.profile
. Désormais, chaque utilisateur peut utiliser la complétion de tabulation pour rechercher des programmes spécifiques à la racine et, le cas échéant, élever les droits.
Cas particulier: SSH
Lorsque ssh est démarré avec une ligne de commande, un shell de connexion interactif est démarré. Mais dans ce cas, /etc/profile
n'est pas lu. Lorsque j'ai défini les variables d'environnement dans le .bash_profile
fichier de chaque utilisateur, cela fonctionnait avec ssh.
~/.profile
est une autre option valable aussi