Solution 1 :
.bash_profile
et .bashrc
sont spécifiques à bash
, alors que .profile
est lu par de nombreux shells en l'absence de leurs propres fichiers de configuration spécifiques au shell. (.profile
était utilisé par le shell Bourne d'origine.) .bash_profile
ou .profile
est lu par les shells de connexion, avec .bashrc
; sous-shell en lecture seule .bashrc
. (Entre le contrôle des tâches et les systèmes de fenêtrage modernes, .bashrc
en soi ne s'utilise pas beaucoup. Si vous utilisez screen
ou tmux
, les écrans/fenêtres exécutent généralement des sous-shells au lieu des shells de connexion.)
L'idée derrière cela était que la configuration unique était effectuée par .profile
(ou sa version spécifique au shell), et les éléments par shell par .bashrc
. Par exemple, vous ne voulez généralement charger les variables d'environnement qu'une seule fois par session au lieu de les faire écraser chaque fois que vous lancez un sous-shell dans une session, alors que vous voulez toujours vos alias (qui ne sont pas propagés automatiquement comme le sont les variables d'environnement).
Autres fichiers de configuration shell notables :
/etc/bash_profile
(recours /etc/profile
) est lu avant le .profile
de l'utilisateur pour la configuration à l'échelle du système, et de même /etc/bashrc
dans des sous-shells (pas de repli pour celui-ci). De nombreux systèmes, y compris Ubuntu, utilisent également un /etc/profile.d
répertoire contenant les scriptlets shell, qui sont .
(source
)-ed de /etc/profile
; les fragments ici sont par shell, avec *.sh
s'appliquant à tous les shells compatibles Bourne/POSIX et autres extensions s'appliquant à ce shell particulier.
Solution 2 :
.profil
.profile
est pour les choses qui ne sont pas spécifiquement liées à Bash
, comme les variables d'environnement PATH
et amis, et devrait être disponible à tout moment.
Par exemple, .profile
doit également être chargé lors du démarrage d'une session de bureau graphique.
.bashrc
.bashrc
est pour la configuration de l'utilisation interactive de Bash, comme Bash aliases
, en définissant votre editor
favori , en définissant le Bash prompt
, etc.
.bash_profile
.bash_profile sert à s'assurer que les deux choses dans .profile
et .bashrc
sont chargés pour login shells
.
Par exemple, .bash_profile
pourrait être quelque chose de simple comme
. ~/.profile
. ~/.bashrc
Si vous deviez omettre .bashrc
, seulement .profile
serait chargé.
Solution 3 :
Selon la page de manuel bash, .bash_profile
est exécuté pour les shells de connexion, tandis que .bashrc
est exécuté pour les shells interactifs sans connexion.
Alors, qu'est-ce qu'un shell de connexion ou non ?
Lorsque vous vous connectez (tapez nom d'utilisateur et mot de passe) via la console, soit assis devant la machine, soit à distance via ssh :.bash_profile
est exécuté pour configurer votre shell avant l'invite de commande initiale. Mais, si vous êtes déjà connecté à votre machine et ouvrez une nouvelle fenêtre de terminal (xterm) dans Gnome ou KDE, alors .bashrc
est exécuté avant l'invite de commande de la fenêtre. .bashrc
est également exécuté lorsque vous démarrez une nouvelle instance bash en tapant /bin/bash
dans un terminal.
Une exception aux directives de la fenêtre de terminal est Terminal.app de Mac OS X, qui exécute un shell de connexion par défaut pour chaque nouvelle fenêtre de terminal, en appelant .bash_profile
au lieu de .bashrc
. D'autres émulateurs de terminaux GUI peuvent faire la même chose, mais la plupart ont tendance à ne pas le faire.
Plus ici.