Jusqu'à la date où j'avais l'habitude de définir mes variables d'environnement dans le bash.bashrc
fichier. Récemment, on m'a dit d'utiliser le /etc/environment
fichier. Eh bien, les deux fonctionnent bien.
Alors, quelle est la différence entre eux?
J'ai googlé ceci 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 changements à l'échelle du système, je suppose. Corrigez-moi si je me trompe. Toute aide sera appréciée.
la source
Le
/etc/environment
fichier définit la variable à l'échelle du système pour chaque utilisateur au démarrage. Les commandes du fichier/etc/bash.bashrc
sont exécutées si lebash
shell est ouvert par un utilisateur. Ainsi, les variables ne seront pas définies à moins qu'unbash
shell ne soit ouvert au moins une fois.la source
Et quand vous parlez de " système à l'échelle ":
Les fichiers de configuration situés dans le
/etc
répertoire s'appliquent à tous les utilisateurs du système. Car/etc/bash.bashrc
cela signifierait pour tous et pour tout ce qui utilise le "Borne Again SHell" aka Bash sur cette machine. Même si vous êtes le seul à l’utiliser, des "utilisateurs techniques" pourraient en être affectés (il suffit de jeter un coup d’œil à la/etc/passwd
et de vérifier la fréquence à laquelle le terme "/ bin / bash" est indiqué - ou utiliségrep bash /etc/passwd | wc -l
, ce qui devrait vous donner ce numéro directement (signifiant: "prend" toutes les lignes contenant la chaîne "bash" du fichier "/ etc / passwd", et envoie les résultats ("|") à la commande "wc" (nombre de mots) pour compter les lignes ("-l").Donc, pour votre utilisateur, il est beaucoup plus sûr de modifier à la
~/.bashrc
place (c'est-à-dire le fichier ".bashrc" - avec un point, oui - dans votre répertoire personnel, par exemple/home/ankur/.bashrc
), ce qui affecte alors votre utilisateur et laisse tout le reste . Les fichiers/etc
entrants ne doivent être modifiés que si les modifications à l'échelle du système sont réellement voulues.De plus, les deux configurations seront utilisées si elles existent. Tout d’abord, le fichier système (ici:)
/etc/bash.bashrc
est lu et "recherché" (ses paramètres s’appliquent à la session en cours), puis les utilisateurs/home/username/.bashrc
sont gérés de la même manière, et peuvent donc ajouter ou même modifier / écraser les paramètres du système global./etc/bash.bashrc
fichier.la source
Au-delà de la discussion à l’échelle du système et des utilisateurs, une des différences les plus importantes
/etc/environment
n’est pas un script autre que~/.bashrc
.Vous ne pouvez pas déréférencer une variable à l'intérieur
/etc/environment
, son affectation de variable prenant littéralement la valeur de la ligne (comme déjà mentionné par roadmr).Votre Ubuntu vous bloquera si vous bousillez l’
$PATH
intérieur/etc/environment
en essayant d’ajouter un nouveau cheminSi 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+ la F1console de connexion, à vérifier manuellement
$PATH
et à réparer le/etc/environment
fichier.Selon cela , il
/etc/environment
est chargé par la pile PAM, qui remplit les variables d’environnement ligne par ligne.la source
La différence entre les deux réside dans le fait que le
/etc/enivironment
fichier 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/etc/environment
fichier, les conséquences peuvent être graves 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 aubash.bashrc
fichier puis au fichier / etc / environment. Ce n'est pas que si vous apportez des modifications aubash.bashrc
fichier, le terminal donnera la préférence au fichier d'utilisateur local (c'est-à-direbash.bashrc
) et ensuite au fichier principal (c'est-à-dire/etc/environment
).la source