GNU/Linux >> Tutoriels Linux >  >> Linux

Vue complète de l'endroit où la variable de chemin est définie dans Bash ?

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.


Linux
  1. Où le terme variable d'environnement par défaut est-il défini ?

  2. Où est le fichier Inittab ?

  3. Trouver l'URL d'un fichier

  4. Comment changer la variable PATH sous Linux

  5. Variable dans Bash Script qui conserve sa valeur depuis la dernière exécution

Les 6 meilleures façons d'afficher des fichiers sous Linux

Afficher le contenu d'un fichier dans la ligne de commande Linux

Comment définir une variable d'environnement dans Bash

Où se trouve le fichier php.ini sur un PC Linux/CentOS ?

Comment lire la dernière ligne d'un fichier texte dans une variable à l'aide de Bash ?

Où est la vue terminale de tty7