OVH Cloud OVH Cloud

variable bash différentes console et X

5 réponses
Avatar
bricem13
Bonsoir

j'ai eu besoin de red=E9finir des variables d'environnement pour mon
bash suite =E0 une config de procmail qui delivre dans mon home
d=E9sormais.


Je me suis aper=E7u qu'en console cette red=E9finition n'est pas prise en
compte tout comme mon prompt color=E9.

J'ai fait la red=E9finition de la mani=E8re suivante dans
/home/MOI/.bashrc

# some environment variable
# file where the incoming mail arrives
MAIL=3D~/mail/`date +%Y`/inbox_`date +%Y`
export MAIL=3D$MAIL



il faut que je fasse quoi pour que cela soit aussi actif en console?

Merci

Brice

5 réponses

Avatar
Cem
Le Wed, 06 Jul 2005 12:58:13 -0700, bricem13 a écrit :

Bonsoir
Bonsoir



j'ai eu besoin de redéfinir des variables d'environnement pour mon
bash suite à une config de procmail qui delivre dans mon home
désormais.

Je me suis aperçu qu'en console cette redéfinition n'est pas prise en
compte tout comme mon prompt coloré.


il faut que je fasse quoi pour que cela soit aussi actif en console?

Faire un "source $HOME/.bashrc" dans le .bash_profile.


Avatar
bricem13
ok merci ça marche!!

sinon question subsidiaire, est-ce que je dois sourcer les fichiers de
configs "system-wide" /etc/bash.bashrc et /etc/profile dans mon .bashrc
ou mon .bash_profile ou ils sont pris en compte quoi qu'il arrive??


Merci, Brice
Avatar
Cem
Le Wed, 06 Jul 2005 13:10:26 -0700, bricem13 a écrit :

sinon question subsidiaire, est-ce que je dois sourcer les fichiers de
configs "system-wide" /etc/bash.bashrc et /etc/profile dans mon .bashrc
ou mon .bash_profile ou ils sont pris en compte quoi qu'il arrive??

/etc/profile est exécuté ainsi que ~/.bash_profile lorsqu'on exécute un

bash de login (au login donc, ou en faisant su - ou bash --login).

~/.bashrc est lu s'il existe lorsque on lance un shell qui n'est pas de
login (par exemple quand on lance un xterm sous X).

Vu que le login a forcément déjà été fait, il est inutile normalement
de réexécuter /etc/profile et ~/.bash_profile lorsqu'on lance un nouveau
shell.
C'est pour ça que je crois qu'il vaut mieux mettre les variables
d'environnement (comme MAIL) dans le ~/.bash_profile que dans le
~/.bashrc.

Tu parles de /etc/bash.bashrc, Ce n'est pas /etc/bashrc tout simplement?

Supposons que ce soit /etc/bashrc...
A moins que le bash n'ait été patché pour ça, ce n'est pas un
comportement standard, je crois, que bash lise /etc/bashrc. Il vaut mieux
le tester (mettre un echo 'lit /etc/bashrc' dans le /etc/bashrc et lancer
une commande bash.

Si /etc/bashrc n'est effectivement pas lu, il faut le "sourcer" dans
~/.bashrc.
Le mieux étant de faire
if [ -f /etc/bash.bashrc ]; then
source /etc/bash.bashrc
fi

Avatar
bricem13
merci pour les explications


Par contre mettre les variables d'environnement dans bash_profile ne
marche pas! j'ai fait le test. D'autre part, si tu sources ton bashrc
dans ton bash_profile pas de pbm que ce soit en cole ou sous X.


Brice
Avatar
Cem
Le Wed, 06 Jul 2005 14:56:49 -0700, bricem13 a écrit :

Par contre mettre les variables d'environnement dans bash_profile ne
marche pas! j'ai fait le test. D'autre part, si tu sources ton bashrc
dans ton bash_profile pas de pbm que ce soit en cole ou sous X.


Ne marche pas?
J'ai pourtant lu qq part que le .bash_profile est la place naturelle des
variables d'environnement et le .bashrc celle des alias et des fonctions.
"Sourcer" le .bashrc dans le .bash_profile est par ailleurs une chose qui
est effectivement à faire puisque le .bashrc n'est pas lu quand on
exécute un shell de login.
Mais c'est vrai à la réflexion que si on se connecte à X via un "display
manager", il n'y a pas de raison que le .bash_profile soit lu.
Je ne m'en rends pas bien compte parce que je n'en utilise plus.
On peut néanmoins contourner cette difficulté.
Si on utilise xterm, on peut mettre
XTerm*loginShell: true
dans le fichier ~/.Xdefault
Et tous les xterm seront lancés avec un shell de login.
Pour konsole, il suffit e faire exécuter bash --login au lieu de bash.
gnome-terminal peut être lancé en tant que shell de connexion.
Etc...