Maison  >  Article  >  Opération et maintenance  >  Partager les étapes pour configurer les variables d'environnement sous Linux (image)

Partager les étapes pour configurer les variables d'environnement sous Linux (image)

黄舟
黄舟original
2017-07-24 14:59:121823parcourir

Les variables d'environnement sous Linux incluent les variables d'environnement au niveau du système et au niveau de l'utilisateur. Les variables d'environnement au niveau du système sont des variables système que chaque utilisateur qui se connecte au système doit lire, tandis que les variables d'environnement au niveau de l'utilisateur sont chargées lorsque l'utilisateur utilise le système. .variables d'environnement. Par conséquent, l'article suivant présente principalement des informations pertinentes sur la configuration des variables d'environnement sous Linux. Les amis dans le besoin peuvent s'y référer.

Introduction

Lorsque nous utilisons habituellement Linux, nous devons souvent configurer certaines variables d'environnement. À ce stade, nous recherchons généralement quelqu'un en ligne simplement. partagé leur expérience. Mais le problème est que leurs méthodes sont différentes. Certains disent que la configuration est dans /etc/profile, certains disent qu'elle est configurée dans /etc/environment, certains disent qu'elle est configurée dans ~/.bash_profile, certains disent qu'elle est configurée dans ~. /.bashrc, et certains disent qu'il est configuré dans ~/.bashrc. On dit que la configuration est dans ~/.bash_login, et certaines personnes disent qu'elle est configurée dans ~/.profile. . . C'est vraiment juste et raisonnable. . . La question est donc de savoir comment Linux lit le fichier de configuration et quelle en est la base ? L’article suivant vous donnera une introduction détaillée, jetons un coup d’œil.

Document

Je déteste toujours le comportement consistant à dire la conclusion sans dire la source, ce qui donne aux gens le sentiment de "Pourquoi devrais-je croire toi?" "Sentiment. Et en fait, les conclusions tirées de discussions informelles sans sources sont essentiellement basées sur ce que disent les autres. En fait, au lieu de demander à d’autres personnes, demandez la documentation. Après avoir cherché pendant un moment, j'ai découvert que les documents pertinents sur la configuration des variables d'environnement se trouvent en fait dans le document man de la commande bash. Après tout, c'est le shell que nous utilisons couramment.

Dans $man bash, j'ai trouvé le texte suivant :


INVOCATION
  A login shell is one whose first character of argument zero is a -, or
  one started with the --login option.
  An interactive shell is one started without non-option arguments and
  without the -c option whose standard input and error are both connected
  to terminals (as determined by isatty(3)), or one started with the -i
  option. PS1 is set and $- includes i if bash is interactive, allowing
  a shell script or a startup file to test this state.
  The following paragraphs describe how bash executes its startup files.
  If any of the files exist but cannot be read, bash reports an error.
  Tildes are expanded in filenames as described below under Tilde Expan‐
  sion in the EXPANSION section.
  When bash is invoked as an interactive login shell, or as a non-inter‐
  active shell with the --login option, it first reads and executes com‐
  mands from the file /etc/profile, if that file exists. After reading
  that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
  in that order, and reads and executes commands from the first one that
  exists and is readable. The --noprofile option may be used when the
  shell is started to inhibit this behavior.
  When a login shell exits, bash reads and executes commands from the
  file ~/.bash_logout, if it exists.
  When an interactive shell that is not a login shell is started, bash
  reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if
  these files exist. This may be inhibited by using the --norc option.
  The --rcfile file option will force bash to read and execute commands
  from file instead of /etc/bash.bashrc and ~/.bashrc.
  When bash is started non-interactively, to run a shell script, for
  example, it looks for the variable BASH_ENV in the environment, expands
  its value if it appears there, and uses the expanded value as the name
  of a file to read and execute. Bash behaves as if the following com‐
  mand were executed:
    if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
  but the value of the PATH variable is not used to search for the file‐
  name.

À travers ce texte, nous avons découvert qu'en réalité les soi-disant variables d'environnement Configuration les fichiers sont les fichiers qui sont automatiquement chargés lorsque le shell se connecte. Cependant, les connexions qu'il a définies sont divisées en deux types :

  • login shell login.

  • Connexion shell interactive.

connexion au shell de connexion

La soi-disant connexion au shell de connexion fait en fait référence à la connexion qui nécessite la saisie d'un mot de passe . Plus précisément, cela inclut le démarrage, la connexion SSH ou la saisie de bash --login pour "faire semblant de saisir le mot de passe pour vous connecter". Dans cette méthode de connexion, le système lira d'abord le fichier /etc/profile. Ensuite, le système recherchera les trois fichiers ~/.bash_profile, ~/.bash_login et ~/.profile dans l'ordre et exécutera uniquement le premier. l'un d'eux. Le fichier existe. En particulier, nous devons prêter attention à la relation « OU logique » entre les trois derniers fichiers. Dans de nombreux cas, nous constaterons que le fichier ~/.profile a été modifié. Pourquoi la configuration ne prend-elle pas effet après une nouvelle connexion ? En effet, l'un des deux premiers fichiers peut exister dans notre système, ce qui entraîne la non-lecture des fichiers restants.

Les trois images suivantes illustrent très bien ce problème :

Connexion shell interactive

La soi-disant connexion shell interactive est en fait relative à la connexion shell de connexion. Nous faisons généralement un clic droit pour ouvrir le terminal après la connexion, ou CTRL+ALT+T pour ouvrir le terminal, qui est la connexion shell interactive. Dans cette méthode de connexion, le système lira /etc/bash.bashrc et ~/.bashrc dans l'ordre et les exécutera. Dans des circonstances normales, certaines constantes et certains alias sont enregistrés par défaut dans le fichier ~/.bashrc, notamment la variable $PS1. Cette variable détermine le format, le style et la couleur de l'invite bash.

Remarque :

Il convient de noter que ces deux méthodes de connexion lisent des fichiers de configuration différents et ne sont pas liées l'une à l'autre, donc Intersection. lorsque nous devons configurer des variables d'environnement, nous devons configurer les variables requises dans différents fichiers selon notre méthode de connexion. Par exemple, la question classique suivante.

Problèmes typiques

Un exemple de configuration anormale du fichier de configuration de l'environnement est que lorsque je me connecte au serveur en utilisant ssh, je trouve que l'invite ressemble à ceci :


bash-4.3$

Oui, tout comme le bash dans la troisième image ci-dessus, l'invite est très étrange, et lorsque ls est entré, le fichiers et dossiers Il n'y a pas non plus de distinction de couleur. Ce problème est évidemment dû au fait que la variable d'environnement $PS1 n'est pas configurée, ce qui l'oblige à utiliser la valeur par défaut, bien qu'en vérifiant le fichier .bashrc, on constate que la variable $PS1 est définie. , mais comme ssh appartient au shell de connexion, le fichier de configuration qu'il lit lors de la connexion est un fichier tel que /etc/profile, et .bashrc n'est pas lu. La cause de ce problème est généralement que nous avons accidentellement supprimé le fichier de configuration par défaut dans /etc/profile, la solution est donc également très simple. . . Copiez simplement certains fichiers de .bashrc dans /etc/profile.

L'éclairage que cette question nous donne est que lorsque nous configurons des variables pour le serveur, essayez de les configurer dans /etc/profile ou ~/.bash_profile, car la connexion au serveur à l'aide de ssh n'utilise fondamentalement pas le fichier .bashrc ; Lorsque nous configurons les variables d'environnement pour notre ordinateur, essayez de les configurer dans .bashrc, car nous lirons alors ce fichier tant que nous ouvrirons le terminal, afin de pouvoir appliquer la configuration sans nous déconnecter (elle ne sera appliquée qu'après la connexion se déconnecter et se reconnecter/fichiers de configuration tels que etc/profil).

Résumé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn