Réponses aux questions sur DONC et askubunt , ainsi que piquer à travers (et lire les en-têtes de) $HOME
et /etc/
, indique 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/
fonctionne 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:
*rc
et *profile
fichiers fondamentalement différents?.bashrc
remplace les variables définies dans .settings
)L'organisation des fichiers de configuration est beaucoup moins uniforme que vos questions ne le laissent supposer. Il n'y a pas de "classe", il n'y a pas de "hiérarchie", et il n'y a pas de "configuration tsar" globale ni de comité qui décrète une syntaxe commune ou d'autres généralisations propres à Nice 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 leurs propres façons de faire les choses, donc vous devriez regarder à la documentation de chaque programme individuel pour répondre à toutes les questions spécifiques sur un fichier 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 des personnes différentes qui ont toutes procédé à une configuration légèrement différente.
Pour répondre ponctuellement à vos autres questions:
*rc
et *profile
ne signifie pas grand-chose, il est donc impossible de répondre à cette question. "rc" est simplement une abréviation ou un suffixe couramment utilisé pour les fichiers de configuration. Son étymologie remonte à l'Antiquité (en années informatiques) et signifie probablement exécuter des commandes (de runcom ). Ce n'est pas parce que les applications utilisent le même mot qu'elles s'accordent sur les conventions. "profil" est un suffixe beaucoup moins courant.
Définissez la "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 (y compris au moins sh
et bash
). Il y a quelque chose appelé environnement associé à chaque processus en cours d'exécution qui peut contenir des variables qui peuvent 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, 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
manual 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 remplacent 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 pas 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 théorique. Encore une fois, reportez-vous à la documentation du programme spécifique que vous utilisez.
Je pense que cette question est trop large à tant de niveaux, par exemple vous posez des questions sur au moins quatre différents programmes en une seule question. Je vais seulement regarder la différence entre les fichiers de configuration dans /etc
et $HOME
.
Unix est un système d'exploitation multi-utilisateurs, cela signifie que de nombreuses personnes différentes peuvent utiliser un système, soit en utilisant ssh
, telnet
ou Xorg
. Pour fournir une configuration standardisée à vos utilisateurs, vous pouvez fournir une configuration à l'échelle du système dans /etc/
, ceci est généralement également utilisé par votre distribution pour fournir une configuration globale, par exemple bash
ou screen
.
D'un autre côté, certains utilisateurs souhaitent personnaliser eux-mêmes les paramètres de leurs programmes, comme les raccourcis clavier, les couleurs ou l'apparence. Cela se fait via le fichier de configuration dans leur $HOME
. Donc en bref /etc/
fournit une configuration à l'échelle du système tandis que les fichiers de configuration dans $ HOME permettent aux utilisateurs de modifier/remplacer la configuration à l'échelle du système.
Une partie de la réponse vient de cet article :
.bashrc
est un script Shell que Bash exécute à chaque démarrage interactif.
Contraste .bash_profile
et .profile
qui ne s'exécutent qu'au début d'un nouveau shell de connexion. (bash -l)
Vous choisissez si une commande va dans .bashrc
contre .bash_profile
selon que vous souhaitez qu'il s'exécute une fois ou à chaque démarrage interactif du shell.