web-dev-qa-db-fra.com

Quelles sont les différences fonctionnelles entre .profile .bash_profile et .bashrc

Quelles sont les différences fonctionnelles entre les .profile, .bash_profile et .bashrc des dossiers?

220
lollercoaster

.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.

180
geekosaur

. 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é.

74
MangeshBiradar

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 .

41
Paulecci