Les réponses aux questions sur SO et askubuntu , ainsi que l' exploration (et la lecture des en-têtes) $HOME
et /etc/
, indiquent un 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 suppose que les fichiers /etc/
fonctionnent pour tous les utilisateurs, alors que ceux-ci $HOME
sont spécifiques à chaque utilisateur. Je rassemble également qui .profile
est chargé à la connexion alors que .bashrc
chargé quand /bin/bash
est exécuté. Je comprends également que différents programmes ont différents fichiers de paramètres (par exemple, .Rprofile
pour R). Mais j'apprécierais quelques éclaircissements:
- Les fichiers
*rc
et les*profile
fichiers sont-ils fondamentalement différents? - Quelle est la portée de tels fichiers (par exemple, quels fichiers sont couramment utilisés avec Linux)
- Existe-t-il une hiérarchie (
.bashrc
écrasement des variables définies par exemple.settings
) - Qu'est-ce qu'une bonne référence pour cette classe de fichiers? Pour les options de ces fichiers?
INVOCATION
section dansman bash
. Voir l'FHS
article du wiki sur les systèmes de fichiers Linux. Cela vous donnera un bon départ et répondra à quelques-unes de ces questions. Les fichiers avec un point précédent (.
) sont généralement spécifiques à l'utilisateur - ils résident dans le$HOME
répertoire de l'utilisateur .Réponses:
L'organisation des fichiers de configuration est beaucoup moins uniforme que vos questions ne 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 "czar de configuration" global ni de comité décrivant une syntaxe commune ou d'autres généralisations bien propres comme celles que vous recherchez. Il y a seulement une multitude d'applications séparées comme
R
,bash
,screen
et l'environnement de bureau GNOME, qui ont tous leurs propres façons de faire, de sorte que vous devriez regarder la documentation de chaque programme pour répondre à toutes spécifiques questions sur un fichier particulier. Si cela semble ad-hoc, c'est parce que: la plupart des logiciels Unix / Linux ont été développés à des fins différentes par des personnes différentes, qui procédaient toutes de manière légèrement différente à la configuration.Pour répondre à vos autres questions par points:
*rc
et*profile
ne veulent pas dire grand chose, donc on ne peut pas vraiment 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 d'ordinateur) et signifie probablement des commandes d'exécution (à partir de runcom ). Ce n'est pas parce que les applications utilisent le même mot qu'elles s'entendent sur des conventions. "profil" est un suffixe beaucoup moins commun.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ée par plusieurs coques différentes (y compris au moinssh
etbash
). Il existe quelque chose appelé un environnement associé à chaque processus en cours d'exécution qui peut contenir des variables pouvant affecter le comportement dudit processus. Généralement, les variables d'environnement sont définies par les fichiers de configuration du shell appropriés, ou peut-être par les fichiers de configuration de n'importe quel environnement de bureau graphique utilisé. Il existe également des fichiers de configuration pour les "bibliothèques", comme.inputrc
pour readline et.gtkrc*
pour GTK, qui affecteront 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 debash
. Une convention générale sur laquelle vous pouvez généralement compter est que les paramètres utilisateur$HOME
remplacent la configuration globale du système dans/etc
. Cela est généralement accompli en lisant le fichier utilisateur après le système, afin que les paramètres ultérieurs remplacent les anciens. Cependant, ce n'est pas une garantie et pour des réponses définitives, vous devriez 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, de sorte que 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.
la source
Je pense que cette question est trop large à tant de niveaux. Par exemple, vous posez des questions sur au moins quatre programmes différents en une seule. Je ne ferai que regarder la différence entre les fichiers de configuration de
/etc
et$HOME
.Unix est un système d'exploitation multi-utilisateurs, cela signifie que beaucoup de personnes différentes peuvent utiliser un système, que ce soit en utilisant
ssh
,telnet
ouXorg
. Pour fournir une configuration standardisée à vos utilisateurs, vous pouvez/etc/
utiliser une configuration système globale. Cette distribution est généralement également utilisée par votre distribution pour fournir une configuration globale, par exemple,bash
ouscreen
.Par ailleurs, certains utilisateurs souhaitent personnaliser les paramètres de leurs programmes, tels que les raccourcis clavier, les couleurs ou l'apparence. Cela se fait via le fichier de configuration dans leur fichier
$HOME
. En bref,/etc/
fournit une configuration à l’échelle du système tandis que les fichiers de configuration de $ HOME permettent aux utilisateurs de modifier / annuler la configuration à l’échelle du système.la source
Une partie de la réponse provient de ce post :
.bashrc
est un script shell que Bash exécute à chaque démarrage interactif.Contraste
.bash_profile
et.profile
qui ne sont exécutés qu’au début d’un nouveau shell de connexion. (bash -l)Vous choisissez si une commande va dans
.bashrc
vs en.bash_profile
fonction de si vous souhaitez l'exécuter une fois ou pour chaque démarrage du shell interactif.la source