Quelle est la différence entre /etc/bash.bashrc et ~ / .bashrc? Lequel devrais-je utiliser?

20

Quand dois-je utiliser chacun des deux fichiers .bashrc pour définir mes alias, mes invites, etc.?

cfischer
la source

Réponses:

34

/etc/bash.bashrc s'applique à tous les utilisateurs

~/.bashrc s'applique uniquement à l'utilisateur dans lequel il se trouve.

Loïc Wolff
la source
3
Et implicite dans la réponse de dex est ... Utilisez votre ~ / .bashrc local dans tous les cas, sauf lorsque vous souhaitez appliquer votre volonté à tous ceux qui utilisent cette machine.
dacracot
À strictement parler, vous n'appliquez rien dans /etc/bash.bashrc car les utilisateurs peuvent toujours le changer dans leur propre ~ / .bashrc
Kim
... sauf quand quelqu'un décide de faire toutes les variables readonlydans /etc/bash.bashrc: \
grawity
1
Sous Ubuntu, ce fichier, comme commenté au début, doit être "sourced" à partir du fichier / etc / profile. J'ai ajouté une commande d'alias à la fin du fichier /etc/bash.bashrc et ajouté la commande "source /etc/bash.bashrc" à la fin du fichier / etc / profile. Fonctionne comme un charme.
jfmessier
2

Selon la documentation GNU Bash :

Lorsque Bash est appelé en tant que shell de connexion interactif, ou en tant que shell non interactif avec l'option --login, il lit et exécute d'abord les commandes du fichier / etc / profile , si ce fichier existe. Après avoir lu ce fichier, il recherche ~ / .bash_profile , ~ / .bash_login et ~ / .profile, dans cet ordre, et lit et exécute les commandes à partir du premier qui existe et est lisible. L'option --noprofile peut être utilisée lorsque le shell est démarré pour inhiber ce comportement.

Appelé en tant que shell interactif sans connexion Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, Bash lit et exécute des commandes à partir de ~ / .bashrc , si ce fichier existe. Cela peut être inhibé en utilisant l'option --norc. L'option --rcfile file obligera Bash à lire et exécuter des commandes à partir du fichier au lieu de ~ / .bashrc.

Donc, généralement, votre ~ / .bash_profile contient la ligne

if [-f ~ / .bashrc]; puis . ~ / .bashrc; Fi

après (ou avant) toute initialisation spécifique à la connexion.

Felipe Alvarez
la source
1
Pas vraiment. Regardez ce fichier git.savannah.gnu.org/cgit/bash.git/tree/shell.c , dans la fonction run_startup_files () où SYS_BASHRC est utilisé, défini dans git.savannah.gnu.org/cgit/bash.git/ tree / config-top.h
mloskot
1

Pour vos préférences personnelles et vos scripts personnels ou fonctions bash, vous devez utiliser .bashrc (alias, fonctions ajoutées à bash ...)

Au moment où vous voulez partager quelque chose avec tous les utilisateurs (ou la plupart des utilisateurs) ou pour des choses d'usage général (chemin pour les exécutables partagés, chemin pour la documentation ...) mettez-le dans /etc/bash.bashrc

J'ai dit la plupart des utilisateurs parce que même disons que vous spécifiez un script salutations.sh qui s'imprime "Hello world!"pour tous les utilisateurs, mais l'utilisateur Pepe veut utiliser à la place le script salutations.sh qui s'imprime "Hola el mundo!". Il peut modifier son chemin dans son .bashrc pour pointer vers son script au lieu du vôtre. En d'autres termes, l'utilisateur peut toujours personnaliser sa session en .bashrc selon ce qu'il veut.

Débogueur
la source