différence entre bash.bashrc et le fichier / etc / environment

39

Jusqu'à la date où j'avais l'habitude de définir mes variables d'environnement dans le fichier bash.bashrc . Récemment, on m'a dit d'utiliser le fichier /etc/environment . Eh bien, les deux fonctionnent bien.

Alors, quelle est la différence entre eux?

J'ai cherché cela dans Google et j'ai trouvé "bashrc est utilisé pour un utilisateur et un environnement particuliers, à l'échelle du système". Qu'entend-on par large du système ici? /etc/bash.bashrc applique également des modifications à l'ensemble du système, je suppose. Corrigez-moi si je me trompe. Toute aide sera appréciée.

    
posée trapaank 14.06.2012 - 14:56
la source

5 réponses

35

Une différence est que /etc/environment ne contient que des définitions de variables et ne semble pas subir d’expansion / interpolation de variable. Ainsi, vous ne pouvez pas faire référence à des variables dans les définitions. Cela ne fonctionnera pas par exemple:

A="else"
B="something $A"

B sera littéralement something $A , pas le something else attendu.

Voir cette question .

Soit dit en passant, la réponse trouvée via Google semble faire référence à ~/.bashrc d'un utilisateur, plutôt qu'à /etc/bash.bashrc du système. Cela peut causer votre confusion.

    
réponse donnée roadmr 14.06.2012 - 15:43
la source
15

Le fichier /etc/environment définit la variable au niveau du système pour chaque utilisateur au démarrage. Les commandes de /etc/bash.bashrc are sont exécutées si le shell bash est ouvert par un utilisateur. Ainsi, les variables ne seront définies que si un shell bash est ouvert au moins une fois.

    
réponse donnée André Stannek 14.06.2012 - 15:44
la source
6

Et lorsque vous vous interrogez sur " l'ensemble du système ":

Les fichiers de configuration situés dans le répertoire /etc s'appliquent à tous les utilisateurs du système. Pour /etc/bash.bashrc , cela s’appliquerait à tous et à tous ceux qui utilisent le "Borne Again SHell", également appelé Bash, sur cette machine. Même si vous êtes le seul humain à l'utiliser, des "utilisateurs techniques" pourraient être affectés (il suffit de jeter un coup d'œil sur /etc/passwd et de vérifier la fréquence à laquelle le terme "/ bin / bash" est indiqué - ou utilisez grep bash /etc/passwd | wc -l , qui devrait vous donner directement ce nombre (ce qui signifie: "saisir" toutes les lignes contenant la chaîne "bash" du fichier "/ etc / passwd", et envoyer les résultats ("|") à la commande "wc" (mot count) pour compter les lignes ("-l").

Donc, pour votre utilisateur, il est beaucoup plus sûr de modifier ~/.bashrc à la place (c'est-à-dire le fichier ".bashrc" - avec un point, oui - dans votre répertoire de base, par exemple /home/ankur/.bashrc ). affecte uniquement votre utilisateur et laisse tout le reste seul. Les fichiers de /etc ne doivent être modifiés que si les modifications à l'échelle du système sont réellement souhaitées.

Par ailleurs: les deux configurations seront utilisées si elles existent. Tout d’abord, le fichier système (ici: /etc/bash.bashrc ) est lu et "obtenu" (paramètres appliqués à la session en cours), puis les utilisateurs /home/username/.bashrc sont gérés de la même manière et peuvent donc s’ajouter ou même changer. / écrase les paramètres du fichier global /etc/bash.bashrc .

    
réponse donnée Izzy 15.06.2012 - 17:27
la source
3

Au-delà de la discussion à l’échelle du système et de l’utilisateur, une des différences les plus significatives est que /etc/environment n’est pas un script autre que ~/.bashrc .

Vous ne pouvez pas déréférencer la variable à l'intérieur de /etc/environment , son affectation de variable qui prend littéralement la valeur de la ligne (comme déjà mentionné par roadmr).

Votre Ubuntu vous bloquera si vous vissez le $PATH dans /etc/environment en essayant d'ajouter un nouveau chemin

PATH=$PATH:/new_path

Si votre page de connexion Ubuntu Gnome ou Unity n'a pas pu vous permettre d'entrer sans vous plaindre d'un mot de passe erroné. Et vous avez récemment modifié /etc/environment , c’est très probablement le cas.

Un correctif consiste à se connecter à la console virtuelle CTRL + ALT + F1 , vérifiez manuellement $PATH et corrigez /etc/environment fichier.

Selon this , /etc/environment est chargé par la pile PAM, qui remplit la variable d’environnement ligne par ligne.

    
réponse donnée legendbb 11.09.2012 - 16:09
la source
-1

La différence entre les deux réside dans le fait que le fichier /etc/enivironment fonctionnera pour tous les utilisateurs tandis que le fichier bash.bashrc fonctionnera particulièrement pour cet utilisateur uniquement. Et si vous faites quelque chose de mal dans le fichier /etc/environment , les conséquences peuvent être lourdes et vous pouvez facilement annuler les modifications apportées au fichier bash.bashrc en copiant le contenu du fichier / etc / environment. Mais la première préférence est donnée au fichier bash.bashrc , puis au fichier / etc / environment. Si vous apportez des modifications au fichier bash.bashrc , le terminal donnera la priorité au fichier utilisateur local (c.-à-d. bash.bashrc ), puis au fichier principal (c.-à-d. /etc/environment ).

    
réponse donnée Pranit Bauva 14.06.2012 - 16:13
la source

Lire d'autres questions sur les étiquettes