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


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


119
2018-04-20 15:42


origine




Réponses:


.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 au shell. (.profile a été utilisé par le shell Bourne original.) .bash_profile ou .profile est lu par les coquilles de connexion, avec .bashrc; sous-coques en lecture seule .bashrc. (Entre le contrôle des travaux et les systèmes de fenêtrage modernes, .bashrc en soi ne s'habitue pas beaucoup. Si tu utilises screen ou tmux, les écrans / fenêtres exécutent généralement des sous-coquilles au lieu des coquilles de connexion.)

L’idée sous-jacente était qu’une installation unique avait été réalisée par .profile (ou une version spécifique à celui-ci), et des informations 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 (se retirer /etc/profile) est lu avant l'utilisateur .profile pour la configuration à l'échelle du système, et de même /etc/bashrc dans des sous-coques (pas de repli pour celui-ci). De nombreux systèmes, y compris Ubuntu, utilisent également une /etc/profile.d répertoire contenant les scriptlets du shell, qui sont . (source) -ed de /etc/profile; les fragments ici sont par shell, avec *.sh s’applique à tous les shells compatibles Bourne / POSIX et autres extensions s’appliquant à ce shell particulier.


101
2018-04-20 15:51





.profil

.profile est pour des 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 devrait é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éfinir votre favori editor, régler le Bash prompt, etc.


.bash_profile

.bash_profile est pour 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 .bash_profile, seulement .profile serait chargé.


31
2018-04-17 06:15



Cela a répondu à ma question pour Mac OS X - Jake Toronto


Selon la page de manuel bash, .bash_profile est exécuté pour les shells de connexion, alors que .bashrc est exécuté pour les shells interactifs autres que ceux 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, 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.

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 et appelle .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 http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html


21
2018-04-03 12:52