Je suppose que vous venez d'un arrière-plan Windows. Je vais donc les comparer (je suis un peu nouveau sur Linux aussi). J'ai trouvé que la réponse de l'utilisateur à mon commentaire était utile pour comprendre les choses.
Sous Windows, une variable peut être permanente ou non. Le terme variable d'environnement comprend une variable définie dans le shell cmd avec la commande SET, ainsi que lorsque la variable est définie dans l'interface graphique Windows, ainsi définie dans le registre, et devient visible dans de nouvelles fenêtres cmd. par exemple, la documentation de la commande set dans Windows https://technet.microsoft.com/en-us/library/bb490998.aspx "Affiche, définit ou supprime les variables d'environnement. Utilisé sans paramètres, set affiche les paramètres d'environnement actuels." Sous Linux, set n'affiche pas les variables d'environnement, il affiche des variables shell qu'il n'appelle pas / ne fait pas référence en tant que variables d'environnement. De plus, Linux n'utilise pas set pour définir des variables (à l'exception des paramètres de position et des options de shell, que j'explique comme une note à la fin), uniquement pour les afficher et même alors uniquement pour afficher les variables du shell. Windows utilise set pour définir et afficher par exemple set a = 5, ce n'est pas le cas pour Linux.
Sous Linux, je suppose que vous pouvez créer un script qui définit des variables au démarrage, par exemple /etc/profile
ou /etc/.bashrc
sinon, elles ne sont pas permanentes. Ils sont stockés dans la RAM.
Il existe une distinction sous Linux entre les variables shell et les variables d'environnement. Sous Linux, les variables shell se trouvent uniquement dans le shell actuel, et les variables d'environnement sont dans ce shell et tous les shells enfants.
Vous pouvez afficher les variables shell avec la set
commande (mais notez que contrairement à Windows, les variables ne sont pas définies sous Linux avec la commande set).
set -o posix; set
(faire ce set -o posix une fois en premier, permet de ne pas afficher trop de choses inutiles). set
Affiche donc les variables du shell.
Vous pouvez afficher les variables d'environnement avec la env
commande
les variables shell sont définies avec par exemple juste a = 5
les variables d'environnement sont définies avec l'exportation, l'exportation définit également la variable shell
Ici, vous voyez la variable shell zzz définie avec zzz = 5, et vous voyez qu'elle apparaît lors de l'exécution set
mais ne s'affiche pas comme une variable d'environnement.
Ici, nous voyons yyy défini avec export, donc c'est une variable d'environnement. Et voyez-le sous les variables shell et les variables d'environnement
$ zzz=5
$ set | grep zzz
zzz=5
$ env | grep zzz
$ export yyy=5
$ set | grep yyy
yyy=5
$ env | grep yyy
yyy=5
$
autres fils utiles
/unix/176001/how-can-i-list-all-shell-variables
/ubuntu/26318/environment-variable-vs-shell-variable-whats-the-difference
Remarque - un point qui élabore un peu et corrige quelque peu ce que j'ai écrit, c'est que, sous Linux bash, 'set' peut être utilisé pour définir des "paramètres positionnels" et des "options / attributs du shell", et techniquement les deux ce sont des variables, bien que les pages de manuel puissent ne pas les décrire comme telles. Mais toujours, comme mentionné, set ne définira pas les variables shell ou les variables d'environnement). Si vous le faites, set asdf
il définit $ 1 sur asdf, et si echo $1
vous voyez asdf. Si tu faisset a=5
il ne définira pas la variable a, égale à 5. Il définira le paramètre positionnel $ 1 égal à la chaîne de "a = 5". Donc, si vous avez déjà vu set a = 5 sous Linux, c'est probablement une erreur à moins que quelqu'un ne veuille réellement cette chaîne a = 5, dans $ 1. L'autre chose que l'ensemble de Linux peut définir, ce sont les options / attributs du shell. Si vous définissez -o, vous en voyez une liste. Et vous pouvez faire par exemple set -o verbose
, off, pour activer le bavardage (btw la valeur par défaut se trouve être désactivée mais cela ne fait aucune différence). Ou vous pouvez le faire set +o verbose
pour désactiver le bavardage. Windows n'a pas une telle utilisation pour sa commande set.