GNU/Linux >> Tutoriels Linux >  >> Linux

La différence entre ~/.profile, ~/.bashrc, ~/.bash_profile, ~/.gnomerc, /etc/bash_bashrc, /etc/screenrc … ?

Réponses aux questions sur SO et askubuntu, ainsi que fouiller (et lire les en-têtes de) $HOME et /etc/ , indiquez un certain nombre de fichiers pouvant être utilisés pour définir des variables d'environnement, notamment :

  • ~/.profile
  • ~/.bashrc
  • ~/.bash_profile
  • ~/.gnomerc
  • ~/.Rprofile
  • /etc/bash_bashrc
  • /etc/profile
  • /etc/screenrc

Je rassemble ces fichiers dans /etc/ fonctionnent pour tous les utilisateurs alors que les fichiers dans $HOME sont spécifiques à l'utilisateur. Je comprends aussi que .profile est chargé à la connexion alors que .bashrc chargé lorsque /bin/bash est exécuté. Je comprends également que différents programmes ont des fichiers de paramètres différents (par exemple, .Rprofile pour R). Mais j'apprécierais quelques éclaircissements :

  • Sont *rc et *profile fichiers fondamentalement différents ?
  • Quelle est la portée de ces fichiers (par exemple, quels fichiers sont couramment utilisés avec Linux) ?
  • Existe-t-il une hiérarchie (par exemple, .bashrc écrase les variables définies dans .settings )
  • Quelle est une bonne référence pour cette catégorie de fichiers ? Pour les options de ces fichiers ?

Questions liées

  • "Comment accéder à une variable d'environnement bash depuis R dans emacs-ess ?"
  • "Différence entre le lancement d'une application à partir d'un raccourci clavier et le terminal ?"

Réponse acceptée :

L'organisation des fichiers de configuration est beaucoup moins uniforme que vos questions semblent l'impliquer. Il n'y a pas de "classe", il n'y a pas de "hiérarchie", et il n'y a pas de "tsar de configuration" global ni de comité qui décrète une syntaxe commune ou d'autres belles généralisations propres comme celles que vous recherchez. Il n'y a qu'une multitude d'applications distinctes comme R , bash , screen et l'environnement de bureau GNOME, qui ont tous leur propre façon de faire les choses, vous devriez donc consulter la documentation de chaque programme individuel pour répondre à toute question spécifique questions sur un dossier particulier. Si cela semble ad hoc, c'est parce que c'est le cas :la plupart des logiciels Unix / Linux ont été développés à des fins différentes par différentes personnes qui ont toutes procédé à une configuration légèrement différente.

Pour répondre ponctuellement à vos autres questions :

  • *rc et *profile ne veut pas dire grand-chose, donc cette question ne peut pas vraiment être répondue. "rc" est simplement une abréviation ou un suffixe couramment utilisé pour les fichiers de configuration. Son étymologie remonte à l'Antiquité (dans les années informatiques) et signifie probablement des commandes d'exécution (de runcom). Ce n'est pas parce que les applications utilisent le même mot qu'elles s'accordent sur des conventions. "profil" est un suffixe beaucoup moins courant.

  • Définir « portée ». La plupart des applications ne partagent pas les fichiers de configuration avec d'autres applications non liées. La seule exception possible est /etc/profile et .profile , qui peut être utilisé par plusieurs shells différents (dont au moins sh et bash ). Il existe quelque chose appelé un environnement associé à chaque processus en cours d'exécution qui peut contenir des variables susceptibles d'affecter le comportement dudit processus. Généralement, les variables d'environnement sont définies par les fichiers de configuration shell appropriés, ou peut-être les fichiers de configuration de l'environnement de bureau graphique que vous utilisez. Il existe également des fichiers de configuration pour les "bibliothèques", comme .inputrc pour readline et .gtkrc* pour GTK, ce qui affectera toutes les applications qui utilisent la bibliothèque.

  • Non, il n'y a pas de hiérarchie globale pour les fichiers de configuration. Encore une fois, reportez-vous à la documentation du programme spécifique en question, par exemple, le bash manuel pour bash . Une convention générale sur laquelle vous pouvez généralement compter est que les paramètres utilisateur dans $HOME remplacer la configuration à l'échelle du système dans /etc . Ceci est généralement accompli en lisant le fichier utilisateur après celui du système, de sorte que les paramètres ultérieurs écrasent les précédents. Cependant, ce n'est pas une garantie, et pour des réponses définitives, vous devez vous référer à la documentation du programme spécifique que vous utilisez.

  • Il n'y a pas de "classe", du moins aucune assez générale pour englober tous les fichiers que vous avez énumérés dans votre question, donc la question d'une référence pour une telle "classe" est sans objet. Encore une fois, reportez-vous à la documentation du programme spécifique que vous utilisez.

Connexe :fusionner des dossiers avec mv ?
Linux
  1. /etc/passwd affiche l'utilisateur dans un groupe, mais /etc/group ne le fait pas

  2. Comment puis-je annuler un chmod sur le répertoire etc?

  3. Pourquoi les répertoires /home, /usr, /var, etc. ont-ils tous le même numéro d'inode (2) ?

  4. Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?

  5. Comment configurer /etc/issues pour afficher l'adresse IP pour eth0

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Linux :Différence entre /dev/console , /dev/tty et /dev/tty0 ?

Centos - Quelle est la différence entre /usr/lib/systemd/system et /etc/systemd/system ?

Comment /etc/motd est-il mis à jour ?

CentOS / RHEL :Comment récupérer à partir d'un fichier /etc/passwd supprimé

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions