Vue complète de l'location de la variable PATH dans bash

J'ai lu à quelques endroits que le PATH est défini dans / etc / profile ou le file .profile qui se trouve dans le directory home.

Est-ce que ce sont les seuls endroits où le path est situé? Je veux une meilleure compréhension de cela.

Dans le file / etc / profile, il indique "file .profile à l'échelle du système pour le shell Bourne" dans le commentaire. Cela signifie-t-il que les files de profil sont les principaux files de configuration de bash?

Dans ce file, je ne vois pas la variable PATH être définie du tout. Dans le file .profile du directory de base, il y a cette ligne:

PATH="$HOME/bin:$PATH" 

C'est la réinitialisation de PATH par les apparences car elle concatène la string $ PATH déjà définie avec $ HOME / bin: non? Mais si / profile et ~ / .profile sont les seuls files qui définissent PATH où est-ce que $ PATH provient de cette ligne de code si elle n'est pas définie dans / etc / profile?

Quelqu'un peut-il expérimenter s'il vous plaît donner une explication large et détaillée de la variable PATH? Merci!

Il existe de nombreux endroits où PATH peut être défini.

Le programme de login règle sur une valeur par défaut. La façon dont cette valeur par défaut est configurée dépend du système. Sur la plupart des systèmes Linux non embarqués, il est extrait de /etc/login.defs , avec des valeurs différentes pour root et pour les autres users. Consultez le manuel de login(1) de votre système pour savoir ce qu'il fait.

Sur les systèmes utilisant PAM , en particulier le module pam_env , les variables d'environnement peuvent être définies dans le file /etc/environment à l'échelle du système et dans le file ~/.pam_environment par user.

Ensuite, la plupart des façons de se connecter (mais pas des tâches cron) exécutent un shell de connection qui lit les files de configuration à l'échelle du système et par user. Ces files peuvent modifier la valeur de PATH , généralement pour append des inputs, mais parfois d'autres façons. Les files lus dépendent de la nature du shell de connection. Les coquilles de style Bourne / POSIX lisent /etc/profile et ~/.profile . Bash lit /etc/profile , mais pour le file par user il ne lit que le premier file existant entre ~/.bash_profile , ~/.bash_login et ~/.profile . Zsh lit /etc/zshenv , ~/.zshenv , /etc/zprofile , ~/.zprofile , /etc/zlogin et ~/.zlogin . De nombreuses sessions d'interface graphique arrivent à charger /etc/profile et ~/.profile , mais cela dépend du gestionnaire d'affichage, de l'environnement de bureau ou d'un autre script de démarrage de session et de la façon dont chaque dissortingbution les a configurés.

La variable PATH initiale est généralement définie dans /etc/profile Parfois, un administrateur sys mettra également les variables PATH à la source dans /etc/profile.d

Ce sont les vars PATH du système que tous ceux qui se connecte héritent par défaut (sauf s'ils sont surchargés localement). Cela établit généralement des paths évidents, comme /usr/bin , bien que dans mon travail, nous utilisons /opt et quelques locations personnalisés de manière extensive, de sorte que ceux-ci sont également définis.

Sur les counts de connection par user, PATH peut également être défini dans ~/.profile . Cela pourrait définir des choses auxquelles tous les users n'ont pas access; peut-être que les chefs de département peuvent exécuter des binarys depuis /opt mais les autres users ne sont pas dérangés par ces binarys. Les users peuvent également modifier ce file, et la chose intéressante à propos de .profile est qu'il n'est pas spécifique au shell; si vous vous connectez, le PATH réglé là-bas est obtenu.

Pour les logins spécifiques au shell, PATH peut être défini dans ~/.bash_profile , ~/.bashrc ou .cshrc , ou similaire. Les users peuvent définir PATH ici s'ils veulent des paths spécifiques pour des interpréteurs de commands spécifiques, ou s'ils conservent toutes leurs preferences personnelles.

En résumé: / etc / profile et /etc/profile.d sont traditionnellement des parameters en cascade; ils sont hérités et sont généralement ajoutés aux files point personnels (bien qu'un user puisse choisir de les replace). Les files de points personnels sont généralement définis par un user.

Bien sûr, un shell a également des variables d'environnement, de sorte qu'une variable d'environnement local peut également append ou surcharger le PATH par défaut dans n'importe lequel des files de configuration.