C'est parce que tu considères toujours que les fichiers de conf' ne contiennent que des aliases, des variables d'environnement ou des définitions de fonctions. Mais ce sont d'authentiques scripts shell qui peuvent également appeler des commandes.
D'autre part, un shell est instancié chaque fois qu'un script est lancé. Il est donc tout-à-fait possible − dans le cas de /etc/init.d, par exemple − qu'ils soient lancés en dehors de toute session. Un script shell n'est pas forcément le père d'un autre shell. Cas plus précis encore, une instance d'un shell peut être la fille d'un shelldifférent. Si ces scripts sont quand même lancés sous ton identité, c'est ton ~/.bashrc qui sera interprété, même si tu n'es pas logué.
Avant de donner des exemples concrets, il faut donc se souvenir que « profile » est attaché à la notion de login et « *rc » à l'instanciation d'un shell en général. Maintenant, les choses qui peuvent être intéressantes à redéfinir à chaque shell peuvent être, par exemple :
- Le titre de la fenêtre, pour y coller le PID, entre autres. Voir http://linuxfr.org/forums/47/24650.html ;
- Des définitions de fonctions ou de variables en fonction du contexte. La variable « $$ », qui donne le PID du shell en cours, est typiquement un truc qui serait défini dans .bashrc si le shell ne le faisait pas tout seul ;
- etc.
Et un autre truc, mon /etc/bash/bashrc était chargé deux fois au login jusque là, une fois via /etc/profile et une fois via .bash_profile ; j'ai enlevé le premier "source" parce qu'à chaque connexion dans un terminal virtuel le $PS1 semblait se comporter anormalement (un "user@machine" parasite sans couleurs s'ajoutait avant le $PS1 personnalisé). Est-ce qu'il y a un usage "propre" pour ça ?
Il faut vérifier dans quel ordre sont exécutés tous ces fichiers de conf. Chez moi, c'est :
[^] # Re: Shells de login
Posté par Obsidian . En réponse au message .bashrc sert à quoi ?. Évalué à 2.
D'autre part, un shell est instancié chaque fois qu'un script est lancé. Il est donc tout-à-fait possible − dans le cas de /etc/init.d, par exemple − qu'ils soient lancés en dehors de toute session. Un script shell n'est pas forcément le père d'un autre shell. Cas plus précis encore, une instance d'un shell peut être la fille d'un shell différent. Si ces scripts sont quand même lancés sous ton identité, c'est ton ~/.bashrc qui sera interprété, même si tu n'es pas logué.
Avant de donner des exemples concrets, il faut donc se souvenir que « profile » est attaché à la notion de login et « *rc » à l'instanciation d'un shell en général. Maintenant, les choses qui peuvent être intéressantes à redéfinir à chaque shell peuvent être, par exemple :
- Le titre de la fenêtre, pour y coller le PID, entre autres. Voir http://linuxfr.org/forums/47/24650.html ;
- Des définitions de fonctions ou de variables en fonction du contexte. La variable « $$ », qui donne le PID du shell en cours, est typiquement un truc qui serait défini dans .bashrc si le shell ne le faisait pas tout seul ;
- etc.
Et un autre truc, mon /etc/bash/bashrc était chargé deux fois au login jusque là, une fois via /etc/profile et une fois via .bash_profile ; j'ai enlevé le premier "source" parce qu'à chaque connexion dans un terminal virtuel le $PS1 semblait se comporter anormalement (un "user@machine" parasite sans couleurs s'ajoutait avant le $PS1 personnalisé). Est-ce qu'il y a un usage "propre" pour ça ?
Il faut vérifier dans quel ordre sont exécutés tous ces fichiers de conf. Chez moi, c'est :
/etc/profile
/etc/bashrc
~/.bashrc
~/.bash_profile
Il se peut qu'un de tes fichiers étende ta variable plutôt que de la redéfinir. Par exemple, « export PS1="\u@\h$PS1".