44 votes

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

Jusqu'à présent, j'avais l'habitude de définir mes variables d'environnement dans le fichier bash.bashrc fichier. Récemment, on m'a dit d'utiliser le fichier /etc/environment fichier. Les deux fonctionnent bien.

Quelle est donc la différence entre les deux ?

J'ai cherché sur Google et j'ai trouvé "bashrc est utilisé pour un utilisateur et un environnement particuliers, à l'échelle du système". Qu'entend-on par "à l'échelle du système" ici ? /etc/bash.bashrc est également en train d'appliquer les changements à l'ensemble du système, je suppose. Corrigez-moi si je me trompe. Toute aide sera appréciée.

37voto

roadmr Points 32606

La différence réside dans le fait que /etc/environment ne contient que des définitions de variables et ne semble pas passer par une quelconque expansion/interpolation des variables. Il n'est donc pas possible de référencer des variables dans des définitions. Ceci, par exemple, ne fonctionnera pas :

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

B sera littéralement something $A et non le résultat escompté something else .

Véase cette question .

D'ailleurs, la réponse que vous avez trouvée sur Google semble se référer à la page d'accueil d'un utilisateur. ~/.bashrc plutôt qu'à l'échelle du système. /etc/bash.bashrc . C'est peut-être la cause de votre confusion.

20voto

André Stannek Points 4038

T /etc/environment définit la variable à l'échelle du système pour chaque utilisateur au démarrage. Les commandes du fichier /etc/bash.bashrc est exécuté si l'option bash Shell est ouvert par n'importe quel utilisateur. Les variables ne seraient donc pas définies à moins qu'un bash Shell est ouvert au moins une fois.

6voto

Izzy Points 3450

Et comme vous vous interrogez sur " à l'échelle du système " :

Les fichiers de configuration situés dans le répertoire /etc s'appliquent à tous les utilisateurs du système. Pour les /etc/bash.bashrc Cela signifie que tout ce qui utilise le "Borne Again Shell", alias Bash, sur cette machine est concerné. 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 la page d'accueil de /etc/passwd et vérifiez combien de fois le terme "/bin/bash" y est mentionné -- ou utilisez grep bash /etc/passwd | wc -l qui devrait vous donner ce numéro directement (c'est-à-dire : "attraper" toutes les lignes contenant la chaîne "bash" dans le fichier "/etc/passwd", et envoyer les résultats ("|") à la commande "wc" (word count) pour compter les lignes ("-l").

Pour votre utilisateur, il est donc beaucoup plus sûr de modifier ~/.bashrc (c'est-à-dire le fichier ".bashrc" -- avec un point en tête, oui -- dans votre répertoire personnel, par ex. /home/ankur/.bashrc ), qui n'affecte que l'utilisateur et ne touche à rien d'autre. Les fichiers en /etc ne doit être modifié que si des changements à l'échelle du système sont réellement envisagés.

En outre : Les deux configurations seront utilisées si elles existent. Tout d'abord, le fichier de l'ensemble du système (ici : /etc/bash.bashrc ) est lue et "sourcée" (ses paramètres sont appliqués à la session en cours), puis les utilisateurs /home/username/.bashrc est traité de la même manière, et peut donc compléter ou même modifier/écraser les paramètres de l'interface globale /etc/bash.bashrc ファイル。

3voto

jabe Points 111

Au-delà de la discussion sur le champ d'application à l'échelle du système et à l'échelle de l'utilisateur, l'une des différences les plus significatives est la suivante /etc/environment es no un script autre que ~/.bashrc .

Vous ne pouvez pas déréférencer une variable à l'intérieur de /etc/environment L'affectation de la variable prend la valeur de la ligne au pied de la lettre (comme l'a déjà mentionné roadmr).

Votre Ubuntu vous bloquera si vous ne respectez pas les règles de la $PATH à l'intérieur /etc/environment en essayant d'ajouter un nouveau chemin

PATH=$PATH:/new_path

Si votre page de connexion Ubuntu Gnome ou Unity ne vous permet pas de vous connecter sans vous plaindre d'un mot de passe erroné. Et que vous avez récemment modifié /etc/environment c'est très probablement le cas.

La solution consiste à se connecter à la console virtuelle CTRL + ALT + F1 la console de connexion, vérifier manuellement $PATH et fixer /etc/environment ファイル。

Selon le cette , /etc/environment est chargé par la pile PAM, qui remplit la variable d'environnement ligne par ligne.

-1voto

Pranit Bauva Points 1051

La différence entre les deux est que le /etc/enivironment fonctionnera pour tous les utilisateurs alors que le fichier bash.bashrc ne fonctionnera que pour cet utilisateur. Et si vous faites une erreur dans le fichier /etc/environment alors les conséquences peuvent être graves alors que vous pouvez facilement annuler les changements dans le fichier bash.bashrc en copiant le contenu du fichier /etc/environment. Mais la première préférence est donnée au fichier /etc/environment. bash.bashrc puis dans le fichier /etc/environment. Ce n'est pas que si vous faites des changements dans le fichier bash.bashrc alors le terminal donnera la préférence au fichier de l'utilisateur local (c.-à-d., bash.bashrc ) et ensuite vers le fichier principal (c'est-à-dire, /etc/environment ).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X