Quelles sont les différences fonctionnelles entre les .profile
, .bash_profile
et .bashrc
des dossiers?
.bash_profile
et .bashrc
sont spécifiques à bash
, tandis que .profile
est lu par de nombreux shells en l'absence de leurs propres fichiers de configuration spécifiques à Shell. (.profile
a été utilisé par le Bourne Shell d'origine.) .bash_profile
ou .profile
est lu par les shells de connexion, avec .bashrc
; sous-coquilles en lecture seule .bashrc
. (Entre le contrôle des tâches et les systèmes de fenêtrage modernes, .bashrc
en soi ne sert pas à grand-chose. Si vous utilisez screen
ou tmux
, les écrans/fenêtres exécutent généralement des sous-shell au lieu des shells de connexion.)
L'idée derrière cela était que la configuration unique était effectuée par .profile
(ou une version spécifique à Shell), et des éléments par shell par .bashrc
. Par exemple, vous ne souhaitez généralement charger les variables d'environnement qu'une seule fois par session au lieu de les supprimer à chaque fois que vous lancez un sous-shell dans une session, alors que vous souhaitez toujours vos alias (qui ne sont pas propagés automatiquement comme les variables d'environnement le sont).
Autres fichiers de configuration Shell notables:
/etc/bash_profile
(se retirer /etc/profile
) est lu avant que l'utilisateur .profile
pour la configuration à l'échelle du système, et de même /etc/bashrc
en sous-coques (pas de repli pour celui-ci). De nombreux systèmes, dont Ubuntu, utilisent également un /etc/profile.d
répertoire contenant les scriptlets Shell, qui sont .
(source
) - éd à partir de /etc/profile
; les fragments ici sont par shell, avec *.sh
s'appliquant à tous les shells compatibles Bourne/POSIX et aux autres extensions s'appliquant à ce shell particulier.
. profile
.profile
est destiné aux éléments qui ne sont pas spécifiquement liés à Bash
, comme les variables d'environnement PATH
et à leurs 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
, définition de votre favori editor
, définition de Bash Prompt
, etc.
. bash_profile
.bash_profile permet de 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é.
Selon la page de manuel de 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 de non-connexion?
Lorsque vous vous connectez (saisissez le nom d'utilisateur et le 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 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 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, appelant .bash_profile
au lieu de .bashrc
. D'autres émulateurs de terminaux GUI peuvent faire de même, mais la plupart ont tendance à ne pas le faire.
Plus ici .