Quelles sont les différences fonctionnelles entre le .profile
, .bash_profile
et les .bashrc
fichiers?
Quelles sont les différences fonctionnelles entre le .profile
, .bash_profile
et les .bashrc
fichiers?
Réponses:
.bash_profile
et .bashrc
sont spécifiques à bash
, alors que .profile
de nombreux shells le lisent en l’absence de leurs propres fichiers de configuration spécifiques au shell. (a .profile
été utilisé par le shell Bourne original.) .bash_profile
ou .profile
est lu par les shell 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, on .bashrc
ne s'utilise pas beaucoup en soi. Si vous utilisez screen
ou tmux
, les écrans / fenêtres exécutent généralement des sous-coques au lieu des coques de connexion.)
L'idée sous-jacente était que la configuration unique était effectuée par .profile
(ou une version spécifique à un shell) et les éléments par shell par .bashrc
. Par exemple, vous ne voulez généralement charger les variables d'environnement qu'une fois par session au lieu de les supprimer 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 les variables d'environnement).
Autres fichiers de configuration de shell notables:
/etc/bash_profile
(fallback /etc/profile
) est lu avant l'utilisateur .profile
pour la configuration à l'échelle du système, ainsi que /etc/bashrc
dans les sous-shell (pas de repli pour celui-ci). De nombreux systèmes, y compris Ubuntu, utilisent également un /etc/profile.d
répertoire contenant des scriptlets shell, qui sont .
( source
) -ed /etc/profile
; les fragments ici sont par shell, avec *.sh
application à tous les shells compatibles Bourne / POSIX et autres extensions s'appliquant à ce shell particulier.
.profil
.profile
est destiné à des éléments qui ne sont pas spécifiquement liés Bash
, comme les variables d'environnement PATH
et les amis, et devrait être disponible à tout moment.
Par exemple, .profile
devrait également être chargé lors du démarrage d’une session de bureau graphique.
.bashrc
.bashrc
est destiné à la configuration de l'utilisation interactive de Bash, comme Bash aliases
définir votre favori editor
, définir le Bash prompt
, etc.
.bash_profile
.bash_profile est destiné à vérifier que les éléments contenus dans .profile
et .bashrc
sont chargés login shells
.
Par exemple, .bash_profile
pourrait être quelque chose de simple comme
. ~/.profile
. ~/.bashrc
Si vous deviez omettre .bashrc
, seuls .profile
seraient chargés.
Selon la page de manuel bash, .bash_profile
est exécuté pour les shells de connexion, alors que pour les shells .bashrc
interactifs autres que de connexion.
Alors, qu'est-ce qu'un shell avec ou sans login?
Lorsque vous vous connectez (tapez le nom d'utilisateur et le mot de passe) via la console, assis devant la machine ou à distance via ssh: .bash_profile
est exécuté pour configurer votre shell avant l'invite de commande initiale. Toutefois, si vous êtes déjà connecté à votre ordinateur et ouvrez une nouvelle fenêtre de terminal (xterm) dans Gnome ou KDE, il .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
un terminal.
Terminal.app de Mac OS X constitue une exception aux instructions de la fenêtre de terminal. Il exécute un shell de connexion par défaut pour chaque nouvelle fenêtre de terminal, en appelant à la .bash_profile
place de .bashrc
. D'autres émulateurs de terminaux d'interface graphique peuvent faire de même, mais la plupart ont tendance à ne pas le faire.
Plus ici .