Différence entre les variables shell et environment
quelles sont les différences entre les variables shell et environment? Où sont stockées ces variables?
4 réponses
Citant source,
les variables UNIX Standard sont divisées en deux catégories, variables d'environnement et des variables shell. En termes généraux, les variables shell s'appliquent uniquement aux instance actuelle du shell et are utilisé à court terme de travail conditions; les variables d'environnement ont une plus grande portée de la signification, et ceux définis à login sont valables pour la durée de la session. Par les variables relatives à la convention et à l'environnement ont SUPÉRIEUR Les variables cas et shell ont des noms minuscules.
pour lister toutes les variables d'environnement, utilisez printenv
et pour lister toutes les variables shell, utilisez set
.
vous noterez que les variables d'environnement stockent des valeurs plus permanentes, par exemple:
HOME=/home/adam
qui change assez rarement, alors que les variables shell stockent des valeurs locales, temporaires, spécifiques à l'interpréteur de commandes, par exemple:
PWD=/tmp
qui change à chaque fois que vous modifiez votre répertoire.
pour la plupart des tâches pratiques, définissez des valeurs d'environnement en ajoutant export VARIABLE_NAME=VALUE
à votre ~/.dossier bashrc.
leur différence est similaire à la différence entre les champs privés et les champs protégés dans une classe Java.
les champs privés D'une classe Java ne sont accessibles que depuis cette classe Java. Les champs protégés D'une classe Java sont accessibles à partir de cette classe Java et de ses sous-classes.
les variables shell d'un shell ne sont accessibles qu'à partir de ce processus shell. Les variables d'environnement exportées à partir de ce shell sont accessibles à partir de ce processus shell et le sous-processus créés à partir de cette coquille.
Pour le shell Bash:
les variables Shell diffèrent des variables d'environnement de différentes façons:
♦ une variable shell est spécifique au shell lui-même et n'est pas héritée par les processus enfants. Par exemple, disons que vous exécutez une autre application depuis le shell, cette application n'héritera pas de la variable shell:
$ SHELL_VAR=xyz
$ firefox
SHELL_VAR
ne sera pas disponible dans l'environnement de l'enfant (firefox).
♦ en contraste, les variables d'environnement du processus parent (le shell ici) sont héritées par tous les processus enfants:
$ export SHELL_VAR=xyz
$ firefox
♦ les variables shell et environnement sont toutes deux locales au shell/processus qui les a définies:
variables D'environnement peut être persistant, alors que pour les variables shell une fois que vous quittez la session, elles sont toutes parties.
Note: les exemples ci-dessus ne modifient que le shell sur lequel vous travaillez, en d'autres termes, si vous vous déconnectez ou démarrez un nouveau shell/terminal, vous n'allez pas voir les variables que vous avez défini, c'est par la principe de la localisation du processus.
comment faire des variables shell présentes:
une façon de le faire est de modifier le ~/.profil fichier:
export SHELL_VAR=xyz
ce paramètre est propre à l'utilisateur et non à l'ensemble du système, pour les variables d'environnement à l'échelle du système, vous pouvez ajouter la ligne ci-dessus à un .sh file in / etc / profile.d
je recommande fortement la lecture de cette page: Environnementvariables
une variable shell est juste un cas spécial d'une variable d'environnement. les variables shell sont héritées de l'environnement et éventuellement copiées à l'environnement des enfants du shell en fonction de la syntaxe utilisée: http://www.pixelbeat.org/docs/env.html