J'ai lu à plusieurs endroits que le PATH
est défini dans /etc/profile
ou le .profile
fichier qui se trouve dans le répertoire personnel.
Sont-ce les seuls endroits où le chemin est tracé ? Je veux mieux le comprendre.
Dans le /etc/profile
fichier, comme le dit le commentaire suivant "system-wide .profile file for the Bourne shell"
. Cela signifie-t-il que les fichiers de profil sont les principaux fichiers de configuration de bash ?
Dans ce fichier, je ne vois pas le PATH
var étant défini du tout. Dans le .profile
fichier dans le répertoire personnel, il y a cette ligne :
PATH="$HOME/bin:$PATH"
Cela réinitialise PATH
par les regards parce qu'il concatène le déjà défini $PATH
chaîne avec $HOME/bin:
à droite? Mais si etc/profile
et ~/.profile
sont les seuls fichiers définissant PATH
où est $PATH
provenant de cette ligne de code si elle n'est pas définie dans /etc/profile
?
Quelqu'un d'expérimenté peut-il donner une explication large et détaillée du PATH
variable? Merci !
Réponse acceptée :
Il existe de nombreux endroits où PATH
peut être défini.
Le login
le programme lui attribue 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 provient de /etc/login.defs
, avec des valeurs différentes pour root et pour les autres utilisateurs. Consulter le login(1)
manuel de votre système pour savoir ce qu'il fait.
Sur les systèmes utilisant PAM, en particulier le pam_env
module, les variables d'environnement peuvent être définies dans le fichier système /etc/environment
et le fichier par utilisateur ~/.pam_environment
.
Ensuite, la plupart des façons de se connecter (mais pas les tâches cron) exécutent un shell de connexion qui lit les fichiers de configuration à l'échelle du système et par utilisateur. Ces fichiers peuvent modifier la valeur de PATH
, généralement pour ajouter des entrées, mais parfois d'autres manières. Les fichiers lus dépendent de la nature du shell de connexion. Les shells de style Bourne/POSIX lisent /etc/profile
et ~/.profile
. Bash lit /etc/profile
, mais pour le fichier par utilisateur, il ne lit que le premier fichier existant parmi ~/.bash_profile
, ~/.bash_login
et ~/.profile
. Zsh lit /etc/zshenv
, ~/.zshenv
, /etc/zprofile
, ~/.zprofile
, /etc/zlogin
et ~/.zlogin
. De nombreuses sessions GUI s'arrangent pour 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 manière dont chaque distribution les a configurés.