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 moinssh
etbash
). 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 pourbash
. 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.